From 5b87e8eeaf7d2d821b5aed14b54a9c5ab55a8a7a Mon Sep 17 00:00:00 2001 From: Christian Despres Date: Mon, 11 Nov 2024 09:06:00 -0500 Subject: [PATCH] Add option for per-compilation dependency tracking The TR_DisableDependencyTracking option disables dependency tracking and dependency-based loading for individual methods. In OpenJ9, dependency tracking will still be disabled unconditionally if -XX:-TrackAOTDependencies is set. Signed-off-by: Christian Despres --- compiler/control/OMROptions.cpp | 2 ++ compiler/control/OMROptions.hpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/compiler/control/OMROptions.cpp b/compiler/control/OMROptions.cpp index d3ec1e59b..025811426 100644 --- a/compiler/control/OMROptions.cpp +++ b/compiler/control/OMROptions.cpp @@ -315,6 +315,7 @@ TR::OptionTable OMR::Options::_jitOptions[] = { {"disableDeadTreeElimination", "O\tdisable dead tree elimination", TR::Options::disableOptimization, deadTreesElimination, 0, "P"}, {"disableDelayRelocationForAOTCompilations", "M\tDo not relocate code for AOT compilations right away", SET_OPTION_BIT(TR_DisableDelayRelocationForAOTCompilations), "F" }, {"disableDememoization", "O\talways call \"memoizing\" getters (like Integer.valueOf) rather than having Escape Analysis turn them into noncontiguous stack allocations", SET_OPTION_BIT(TR_DisableDememoization), "F"}, + {"disableDependencyTracking", "M\tdisable dependency tracking for AOT compilations", SET_OPTION_BIT(TR_DisableDependencyTracking), "F"}, {"disableDirectMemoryOps", "O\tdisable generation of direct memory instructions",SET_OPTION_BIT(TR_DisableDirectMemoryOps), "F"}, {"disableDirectStaticAccessOnZ", "O\tsupport relative load instructions for c and c++", SET_OPTION_BIT(TR_DisableDirectStaticAccessOnZ), "F"}, {"disableDirectToJNI", "O\tdisable all JNI linkage dispatch sequences including thunks", SET_OPTION_BIT(TR_DisableDirectToJNI), "F"}, @@ -700,6 +701,7 @@ TR::OptionTable OMR::Options::_jitOptions[] = { {"enableCompilationYieldStats", "M\tenable statistics on time between 2 consecutive yield points", SET_OPTION_BIT(TR_EnableCompYieldStats), "F", NOT_IN_SUBSET}, {"enableCopyingTROTInduction1Idioms", "O\tenable CopyingTROTInduction1 idiom patterns", SET_OPTION_BIT(TR_EnableCopyingTROTInduction1Idioms), "F", NOT_IN_SUBSET}, {"enableDataCacheStatistics", "I\tenable the collection and display of data cache related statistics.", SET_OPTION_BIT(TR_EnableDataCacheStatistics),"F", NOT_IN_SUBSET}, + {"enableDependencyTracking", "M\tenable dependency tracking for AOT compilations", RESET_OPTION_BIT(TR_DisableDependencyTracking), "F"}, {"enableDeterministicOrientedCompilation", "O\tenable deterministic oriented compilation", SET_OPTION_BIT(TR_EnableDeterministicOrientedCompilation), "F"}, {"enableDLTBytecodeIndex=", "O\tforce attempted DLT compilation to use specified bytecode index", TR::Options::set32BitNumeric, offsetof(OMR::Options,_enableDLTBytecodeIndex), 0, "F%d"}, {"enableDowngradeOnHugeQSZ", "M\tdowngrade first time compilations when the compilation queue is huge (1000+ entries)", SET_OPTION_BIT(TR_EnableDowngradeOnHugeQSZ), "F", NOT_IN_SUBSET}, diff --git a/compiler/control/OMROptions.hpp b/compiler/control/OMROptions.hpp index 9c51ec9b2..8c4595068 100644 --- a/compiler/control/OMROptions.hpp +++ b/compiler/control/OMROptions.hpp @@ -396,7 +396,7 @@ enum TR_CompilationOptions TR_RequestJITServerCachedMethods = 0x00001000 + 10, TR_DisableNewMethodOverride = 0x00002000 + 10, TR_EnableSharedCacheDisclaiming = 0x00004000 + 10, - // Available = 0x00008000 + 10, + TR_DisableDependencyTracking = 0x00008000 + 10, // Available = 0x00010000 + 10, TR_EnableSequentialLoadStoreWarm = 0x00020000 + 10, TR_EnableSequentialLoadStoreCold = 0x00040000 + 10,