AbortOnBenchmarkCounterOverflow | Boolean | false | Abort VM with SIGILL if benchmark counters controlled by the
(Generic|Timed|Benchmark)DynamicCounters
option overflow. WARNING: No descriptive error message will be printed! In
case of an overflow, manual inspection of the emitted code is required.
|
ActiveProcessorCount | Integer | -1 | Overwrites the available number of processors provided by the OS. Any
value <= 0 means using the processor count from the OS.
|
AggregatedMetricsFile | String | null | File to which aggregated metrics are dumped at shutdown. A CSV format
is used if the file ends with .csv otherwise a more human readable
format is used. If not specified, metrics are dumped to the console.
|
AliasArrayTypeFlows | Boolean | true | Model all array type flows using a unique elements type flow
abstraction.
|
AllocationProfilingThreshold | Integer | 1048576 | The minimum size in bytes required for printing an allocation profiling
entry
|
AllocationSiteSensitiveHeap | Boolean | false | A context sensitive heap means that each heap allocated object is
modeled by using at least the allocation site.
|
AlwaysInlineIntrinsics | Boolean | false | Unconditionally inline intrinsics
|
AlwaysInlineVTableStubs | Boolean | false | |
AlwaysPreTouch | Boolean | false | Force all freshly committed pages to be pre-touched. G1 GC only.
|
AnalysisContextSensitivity | String | "insens" | Controls the static analysis context sensitivity. Available values:
insens (context insensitive analysis), allocsens (context insensitive
analysis, context insensitive heap, allocation site sensitive heap),
_1obj (1 object sensitive analysis with a context insensitive heap),
_2obj1h (2 object sensitive with a 1 context sensitive heap)
|
AnalysisSizeCutoff | Integer | 8 | The maximum size of type and method profiles returned by the static
analysis. -1 indicates no limitation.
|
ArrayRegionEqualsConstantLimit | Integer | 4096 | Array region equality checks will be evaluated at compile time if the
receiver is a constant and its length is smaller than this value.
|
AuditHandles | Boolean | false | Record stack trace along with scoped foreign object reference wrappers to debug issue with a wrapper being used after its scope has closed.
|
AutomaticReferenceHandling | Boolean | false | Determines if the reference handling is executed automatically or
manually.
|
BaseTargetSpending | Integer | 120 | The base target spending used to estimate the inlining threshold; the
higher, the likelier it is to inline.
|
BenchmarkCounterPrintingCutoff | Boolean | true | Use a cutoff to print only most significant counters.
|
BenchmarkCountersDumpDynamic | Boolean | true | Dump dynamic counters
|
BenchmarkCountersDumpStatic | Boolean | false | Dump static counters
|
BenchmarkCountersFile | String | null | File to which benchmark counters are dumped. A CSV format is used if
the file ends with .csv otherwise a more human readable format is used.
The fields in the CSV format are: category, group, name, value
|
BenchmarkDynamicCounters | String | null | Turn on the benchmark counters. The format of this option is:
(err|out),start pattern,end pattern
Start counting when the start pattern matches on the given stream and stop when the end pattern occurs.
You can use "~" to match 1 or more digits.
Examples:
err, starting =====, PASSED in
out,Iteration ~ (~s) begins:,Iteration ~ (~s) ends:
The first pattern matches DaCapo output and the second matches SPECjvm2008 output.
As a more detailed example, here are the options to use for getting statistics
about allocations within the DaCapo pmd benchmark:
-XX:JVMCICounterSize= -XX:-JVMCICountersExcludeCompiler \
-Dgraal.BenchmarkDynamicCounters="err, starting ====, PASSED in " \
-Dgraal.ProfileAllocations=true
The JVMCICounterSize value depends on the granularity of the profiling -
10000 should be sufficient. Omit JVMCICountersExcludeCompiler to exclude
counting allocations on the compiler threads.
The counters can be further configured by the ProfileAllocationsContext option.
We highly recommend the use of -Dgraal.AbortOnBenchmarkCounterOverflow=true to
detect counter overflows eagerly.
|
BlindConstants | Boolean | false | Blind constants in code with a random key.
|
BootstrapInitializeOnly | Boolean | false | Do not compile anything on bootstrap but just initialize the compiler.
|
BootstrapTimeout | Double | 15.0 | Maximum time in minutes to spend bootstrapping (0 to disable this
limit).
|
BootstrapWatchDogCriticalRateRatio | Double | 0.25 | Ratio of the maximum compilation rate below which the bootstrap
compilation rate must not fall (0 or less disables monitoring).
|
BouncyCastleIntrinsics | Boolean | true | Enable native intrinsics for BouncyCastle.
|
BreakChainedPhis | Boolean | true | Break chained phis
|
CAIAggressivelyOptimizeHot | Boolean | true | Perform more aggressive optimization on compilation units deemed to be
hot.
|
CAIApplyProfilesWhileExpanding | Boolean | true | Apply sampling based profiles to candidates for inlining before doing
the inlining.
|
CAIHotBonusWhileExpanding | Integer | 50 | Apply a bonus to the priority of hot cutoff nodes during exploration.
Set to 0 to disable.
|
CallGraphCompilerNodeLimit | Integer | 35000 | Controls the maximum number of compiler nodes that can appear in the
call graph
|
CallGraphSizeLimit | Integer | 1200 | Controls the maximum size of the call graph before ceasing inlining.
|
CallGraphSizePenaltyCoefficient | Double | 0.01 | Reduces the likelihood of exploring call graph subtrees that are large.
|
CanonicalGraphStringsCheckConstants | Boolean | false | Exclude virtual nodes when dumping canonical text for graphs.
|
CanonicalGraphStringsExcludeVirtuals | Boolean | true | Exclude virtual nodes when dumping canonical text for graphs.
|
CanonicalGraphStringsRemoveIdentities | Boolean | true | Attempts to remove object identity hashes when dumping canonical text
for graphs.
|
ClearMetricsAfterBootstrap | Boolean | false | Clear the debug metrics after bootstrap.
|
CodeSerializationTypeInfo | Boolean | false | Prepend the size and label of each element to the stream when serializing HotSpotCompiledCode to verify both ends of the protocol agree on the format. Defaults to true in non-product builds.
|
CollectImageBuildStatistics | Boolean | false | Collect information during image build about devirtualized invokes and
bytecode exceptions.
|
CollectYoungGenerationSeparately | Boolean | null | Determines if a full GC collects the young generation separately or
together with the old generation. Serial GC only.
|
CompilationBailoutAsFailure | Boolean | false | Treat compilation bailouts like compilation failures.
|
CompilationCountLimit | Integer | 0 | The number of compilations allowed for any method before the VM exits
(a value of 0 means there is no limit).
|
CompilationExcludePhases | String | null | Exclude certain phases from compilation, either unconditionally or with
a method filter. Multiple exclusions can be specified separated by ':'.
Phase names are matched as substrings, e.g.:
CompilationExcludePhases=PartialEscape:Loop=A.*,B.foo excludes
PartialEscapePhase from all compilations and any phase containing
'Loop' in its name from compilations of all methods in class A and of
method B.foo.
|
CompilationExpirationPeriod | Double | 300.0 | Time limit in seconds before a compilation expires (0 to disable the
limit). A non-zero value for this option is doubled if assertions are
enabled and quadrupled if DetailedAsserts is true.
|
CompilationFailureAction | String | Silent | Specifies the action to take when compilation fails.
The accepted values are:
Silent - Print nothing to the console.
Print - Print a stack trace to the console.
Diagnose* - Retry the compilation with extra diagnostics.
ExitVM - Same as Diagnose except that the VM process exits after retrying.
* If "Diagnose" is set compilation will be retried with extra diagnostics enabled including dumping (see file:doc-files/DumpHelp.txt).
In such a scenario DiagnoseDumpLevel can be used to specify the dump level (DebugContext dump levels) accordingly.
|
CompilationIsolateAddressSpaceSize | Long | 0 | Size of the reserved address space of each compilation isolate (0:
default for new isolates).
|
CompilationWatchDogStartDelay | Integer | 0 | Delay in seconds before watch dog monitors a compilation (0 disables
monitoring).
|
CompilationWatchDogVMExitDelay | Integer | 0 | Number of seconds after which a compilation appearing to make no
progress causes the VM to exit (0 disables VM exiting).
|
CompileGraalWithC1Only | Boolean | true | In tiered mode compile Graal and JVMCI using optimized first tier code.
|
CompileInIsolates | Boolean | true | Activate runtime compilation in separate isolates (enable support
during image build with option SupportCompileInIsolates).
|
CompileInPerThreadReusedIsolates | Boolean | true | Create one reusable isolate per compilation thread as opposed to one
isolate per compilation (enable through CompileInIsolates).
|
CompilerConfiguration | String | null | Names the compiler configuration to use. If omitted, the compiler
configuration with the highest auto-selection priority is used. To see
the set of available configurations, supply the value 'help' to this
option.
|
CompilerNodePenaltyCoefficient | Double | 0.006 | Controls the likelihood of exploring subtrees that already have a lot
of code during inlining.
|
Compiler | String | null | Selects the system compiler. This must match the getCompilerName() value returned by a jdk.vm.ci.runtime.JVMCICompilerFactory provider. An empty string or the value "null" selects a compiler that will raise an exception upon receiving a compilation request.
|
ConcGCThreads | Integer | 0 | Number of concurrent GC threads G1 will use.
|
ConditionalEliminationBeforeAnalysis | Boolean | true | Run conditional elimination before static analysis.
|
ConditionalEliminationMaxIterations | Integer | 4 | |
ConditionalElimination | Boolean | true | |
ConsiderVectorizableLoops | Boolean | true | Consider the vectorizability of loop during the duplication of a merge
inside a loop.There are rare cases where duplication can destroy
vectorization.
|
CostNewLiveVariable | Integer | 4 | PullThroughPhiOptimization: Abstract cost for the creation of a new
live value: new values can have a negativeimpact on register
allocation, therefore we penalize it.
|
CostReductionFactorHotCode | Double | 128.0 | See CostReductionFactor.
|
CostReductionFactor | Double | 32.0 | PullThroughPhiOptimization: Cost/Benefit heuristic for EE floating node
duplication: reduce cost by a constant factor when comparing with
relative benefit.
|
Count | String | null | Pattern for specifying scopes in which counters are enabled. See the
Dump option for the pattern syntax. An empty value enables all counters
unconditionally.
|
CountedStripMiningBudgetHotCode | Double | 2.5 | See CountedStripMiningBudget.
|
CountedStripMiningBudget | Double | 0.1 | Code size budget of the strip mining transformation in terms of
NodeCostSize.
|
CountedStripMiningInnerLoopTrips | Integer | 4096 | The max number of iterations the counted inner loop takes.
|
CountedStripMiningLogCounters | Boolean | false | Print counter phi values on each outer and inner loop iteration.
|
CountedStripMiningMinFrequency | Integer | 4 | Minimal frequency to consider a loop for strip mining.
|
CountedStripMiningNodeSizeSmallGraphs | Integer | 2000 | Code size in NodeSize defining when code size heuristics starts capping
strip mining.
|
Counters | String | null | Comma separated names of counters that are enabled irrespective of the
value for Count option. An empty value enables all counters
unconditionally.
|
CrashAtIsFatal | Boolean | false | Converts an exception triggered by the CrashAt option into a fatal
error if a non-null pointer was passed in the _fatal option to
JNI_CreateJavaVM. This option exists for the purpose of testing fatal
error handling in libgraal.
|
CrashAtThrowsOOME | Boolean | false | Replaces first exception thrown by the CrashAt option with an
OutOfMemoryError. Subsequently CrashAt exceptions are suppressed. This
option exists to test HeapDumpOnOutOfMemoryError. See the MethodFilter
option for the pattern syntax.
|
CrashAt | String | null | Pattern for method(s) that will trigger an exception when compiled.
This option exists to test handling compilation crashes gracefully. See
the MethodFilter option for the pattern syntax. A ':Bailout' suffix
will raise a bailout exception and a ':PermanentBailout' suffix will
raise a permanent bailout exception.
|
CutoffCodeSizePenaltyCoefficient | Double | 1.0E-5 | Controls the likelihood of further exploring subtrees with a lot of
code during inlining.
|
DebugPeelingSynonyms | Boolean | false | Debug simulation synonyms during simulation-based loop peeling.
|
DebugStubsAndSnippets | Boolean | false | Enable debug output for stub code generation and snippet preparation.
|
DefaultLoopFrequency | Double | 100.0 | Default frequency for loops with unknown local frequency.
|
DefaultUnswitchFactor | Double | 0.7 | Default unswitching factor for control split node with unkown profile
data.
|
DeoptALot | Boolean | false | |
DeoptAfterOSR | Boolean | true | Deoptimize OSR compiled code when the OSR entry loop is finished if
there is no mature profile available for the rest of the method.
|
DeoptsToDisableOptimisticOptimization | Integer | 40 | |
DetailedAsserts | Boolean | false | Enable expensive assertions if normal assertions (i.e. -ea or -esa) are
enabled.
|
DetectInvertedLoopsAsCounted | Boolean | true | |
DevirtualizeHotCallees | Boolean | true | Devirtualizes callees that are hot.
|
DiagnoseDumpLevel | Integer | 3 | Specify the dump level if CompilationFailureAction#Diagnose is used.See
CompilationFailureAction for details.
file:doc-files/CompilationFailureActionHelp.txt
|
DiagnosticDetails | String | "" | Specifies how many details are printed for certain diagnostic thunks,
e.g.: 'DumpThreads:1,DumpRegisters:2'. A value of 1 will result in the
maximum amount of information, higher values will print less
information. By default, the most detailed output is enabled for all
diagnostic thunks. Wildcards (*) are supported in the name of the
diagnostic thunk.
|
DisableExplicitGC | Boolean | false | Ignore calls to System.gc().
|
DisableIntercept | Boolean | false | Disable intercepting exceptions in debug scopes.
|
DisableIntrinsics | String | null | Disable intrinsics matching the given method filter (see MethodFilter
option for details). For example, 'DisableIntrinsics=String.equals'
disables intrinsics for any method named 'equals' in a class whose
simple name is 'String'. You can append ':verbose' at the end of the
filter value to print out disabled intrinsics as they are encountered
during compilation (e.g., 'String.equals:verbose').
|
DominatorUsageTreeMaxDepth | Integer | 16 | |
DumpAfterEveryBCI | Boolean | false | Dump the current graph after every bci to IGV.
|
DumpDetailedNodeTypeStats | Boolean | false | Gather statistics on local variables and their lifetimes relative to
FrameStates.
|
DumpEndVersusExitLoopFrequencies | Boolean | false | Debug flag to dump loop frequency differences computed based on loop
end or exit nodes.If the frequencies diverge a lot, this may indicate
missing profiles on control flowinside the loop body.
|
DumpHeapAndExit | Boolean | false | Create a heap dump and exit.
|
DumpMethodsData | Boolean | false | Dump a JSON array containing all methods included in the image and
exit.
|
DumpOnError | Boolean | false | Send compiler IR to dump handlers on error.
|
DumpOnPhaseChange | String | null | Dump a before and after graph if the named phase changes the
graph.%nThe argument is substring matched against the simple name of
the phase class
|
DumpPath | String | "graal_dumps" | The directory where various Graal dump files are written.
|
DumpSerializedCode | String | null | Dump serialized code during code installation for code whose simple name (a stub) or fully qualified name (an nmethod) contains this option's value as a substring.
|
Dump | String | null | Filter pattern for specifying scopes in which dumping is enabled.
A filter is a list of comma-separated terms of the form:
[:]
If contains a "*" or "?" character, it is interpreted as a glob pattern.
Otherwise, it is interpreted as a substring. If is empty, it
matches every scope. If : is omitted, it defaults to 1. The term
~ is a shorthand for :0 to disable a debug facility for a pattern.
The default log level is 0 (disabled). Terms with an empty pattern set
the default log level to the specified value. The last
matching term with a non-empty pattern selects the level specified. If
no term matches, the log level is the default level. A filter with no
terms matches every scope with a log level of 1.
Examples of debug filters:
---------
(empty string)
Matches any scope with level 1.
---------
:1
Matches any scope with level 1.
---------
*
Matches any scope with level 1.
---------
CodeGen,CodeInstall
Matches scopes containing "CodeGen" or "CodeInstall", both with level 1.
---------
CodeGen:2,CodeInstall:1
Matches scopes containing "CodeGen" with level 2, or "CodeInstall" with level 1.
---------
Outer:2,Inner:0}
Matches scopes containing "Outer" with log level 2, or "Inner" with log level 0. If the scope
name contains both patterns then the log level will be 0. This is useful for silencing subscopes.
---------
:1,Dead:2
Matches scopes containing "Dead" with level 2, and all other scopes with level 1.
---------
Dead:0,:1
Matches all scopes with level 1, except those containing "Dead". Note that the location of
the :1 doesn't matter since it's specifying the default log level so it's the same as
specifying :1,Dead:0.
---------
Code*
Matches scopes starting with "Code" with level 1.
---------
Code,~Dead
Matches scopes containing "Code" but not "Dead", with level 1.
|
DumpingErrorsAreFatal | Boolean | false | Treat any exceptions during dumping as fatal.
|
DuplicateALot | Boolean | false | Perform Duplications as long as there is any sane improvement.
|
DuplicationBudgetFactorHotCode | Double | 2.5 | See DuplicationBudgetFactor.
|
DuplicationBudgetFactorLate | Double | 0.5 | Percentage in node cost graph size for the late duplication budget.
Computed relative to the methods code size.
|
DuplicationBudgetFactor | Double | 0.25 | Percentage in node cost graph size for the duplication budget. Computed
relative to the methods code size.
|
DuplicationCostReductionFactorHotCode | Integer | 256 | See DuplicationCostReductionFactor
|
DuplicationCostReductionFactor | Integer | 64 | Cost/Benefit heuristic for EE simulation-based code duplication: reduce
cost by a constant factor when comparing with relative benefit.
|
DuplicationMinBranchFrequency | Double | 0.66 | Ignore low frequency branches during duplication.
|
DynamicCountersPrintGroupSeparator | Boolean | true | Use grouping separators for number printing
|
EEPeelAlot | Boolean | false | |
EagerSnippets | Boolean | true | Eagerly construct extra snippet info.
|
EarlyCodeEmissionOrder | Boolean | false | Enable early code emission order computation instead of late code
emission order computation
|
EarlyExpandCheckCast | Boolean | true | Try to improve code generation by making checkcast operations better
optimizable early in the compilation pipeline.
|
EarlyGVN | Boolean | true | Perform early global value numbering.
|
EarlyLICM | Boolean | true | Perform early loop invariant code motion.
|
EmitStringSubstitutions | Boolean | true | Emit substitutions for String methods
|
EnableSignalHandling | Boolean | false | Enables signal handling
|
EnterpriseCloneReadElimination | Boolean | true | Try to eliminate array clone operations by handling clone operations in
early read elimination.
|
EnterpriseEAIterations | Integer | 3 | Enterprise PEA Iterations.
|
EnterpriseEarlyGVN | Boolean | true | Perform an extended version of early global value numbering on a
graph.Considers only graphs without floating guards.
|
EnterpriseEarlyInversionGVN | Boolean | true | Enterprise Loop Inversion for GVN
|
EnterpriseEarlyReadElimination | Boolean | true | Run more read eliminations early in the compilation pipeline.
|
EnterpriseExactIVOpt | Boolean | true | Try to improve counted loop detection by specially handling math exact
operations with code duplication.
|
EnterprisePartialUnroll | Boolean | true | Enable EE version of partial loop unrolling that considers more loop
shapes for unrolling.
|
EnterpriseRCELogRangeCheckValues | Boolean | false | Log all range check sub values to stdout.
|
EnterpriseRangeCheckElimination | Boolean | true | Perform range check elimination for java long type range checks.
|
ErgoHeapSizeLimit | Long | 0 | Maximum ergonomically set heap size (in bytes); zero means use MaxRAM *
MaxRAMPercentage / 100. G1 GC only.
|
EscapeAnalysisBeforeAnalysis | Boolean | true | Run partial escape analysis on compiler graphs before static analysis.
|
EscapeAnalysisIterations | Integer | 2 | |
EscapeAnalysisLoopCutoff | Integer | 20 | |
EscapeAnalyzeOnly | String | null | |
ExactFullUnrollMaxNodes | Integer | 800 | |
ExactPartialUnrollMaxNodes | Integer | 200 | |
ExcludeFunctionFromDuplication | String | null | Exclude compilations that MethodFilter.match this string from the
duplication optimization.
|
ExhaustiveHeapScan | Boolean | false | Scan all objects reachable from roots for analysis. By default false.
|
ExitOnOutOfMemoryError | Boolean | false | Exit on the first occurrence of an out-of-memory error that is thrown
because the Java heap is out of memory.
|
ExpandAllProximityBonusInertia | Double | 2.0 | The inertia at which the expand-all proximity bonus decreases with the
number of yet unexpanded nodes.
|
ExpandAllProximityBonus | Double | 6.0 | The decrease in call graph expansion pressure when there are few call
nodes left to explore.
|
ExpansionInertiaBaseValue | Integer | 550 | The slowness at which the expansion pressure grows with code size; the
higher it is, the slower the pressure growth.
|
ExpansionInertiaInvokeBonus | Integer | 14 | The extra slowness at which the expansion pressure grows with the code
size, for each extra invoke node.
|
ExpansionInertiaMax | Integer | 2000 | The max slowness at which the expansion pressure grows with the code
size.
|
ExpectedEdenSize | Long | 33554432 | Soft upper limit for used eden size. The hinted GC will be performed if
the used eden size exceeds this value.
|
ExplicitGCInvokesConcurrent | Boolean | false | A System.gc() request invokes a concurrent collection. G1 GC only.
|
ExtendedAsserts | Boolean | false | Enable extended asserts which slow down analysis.
|
FailedLoopExplosionIsFatal | Boolean | false | Do not bail out but throw an exception on failed loop explosion.
|
FallbackExecutorRuntimeJavaArg | Strings | * | Internal option used to specify runtime java arguments for
FallbackExecutor.
|
FlightRecorderLogging | String | "all=warning" | Usage: -XX:FlightRecorderLogging=[tag1[+tag2...][*][=level][,...]]
When this option is not set, logging is enabled at a level of WARNING.
When this option is set to the empty string, logging is enabled at a level of INFO.
When this option is set to "disable", logging is disabled entirely.
Otherwise, this option expects a comma separated list of tag combinations, each with an optional wildcard (*) and level.
A tag combination without a level is given a default level of INFO.
Messages with tags that match a given tag combination are set to log at that tag combination's level.
If a tag combination does not have a wildcard, then only messages with exactly the same tags are matched.
Otherwise, messages whose tags are a subset of the tag combination are matched.
Specifying "all" instead of a tag combination matches all tag combinations.
If more than one tag combination matches a message's tags, the rightmost one will apply.
Messages with tags that do not have any matching tag combinations are set to log at a default level of WARNING.
This option is case insensitive.
Available log levels:
[trace, debug, info, warning, error, off]
Available log tags:
[jfr, system, event, setting, bytecode, parser, metadata, dcmd]
|
FlightRecorder | Boolean | false | Enable Java Flight Recorder.
|
FloatingDivNodes | Boolean | true | Try to float non-constant division operations to expose global value
numbering of divisions.
|
ForceAdversarialLayout | Boolean | false | Place N-byte constants in the data section such that they are
misaligned with respect to N*2. For example, place 4 byte constants at
offset 4, 12 or 20, etc. This layout is used to detect instructions
that load constants with alignment smaller than the fetch size. For
instance, an XORPS instruction that does a 16-byte fetch of a 4-byte
float not aligned to 16 bytes will cause a segfault.
|
ForceDumpGraphsBeforeCompilation | Boolean | false | Force-dump graphs before compilation
|
ForceExplicitReachabilityFence | Boolean | false | Force an explicit compiler node for Reference.reachabilityFence,
instead of relying on FrameState liveness
|
ForceTranslateFailure | String | null | Forces HotSpotJVMCIRuntime.translate to throw an exception in the context of the peer runtime. The value is a filter that can restrict the forced failure to matching translated objects. See HotSpotJVMCIRuntime.postTranslation for more details. This option exists soley to test correct handling of translation failure.
|
ForceUnroll | Boolean | false | Force partial unrolling of loops if at all possible.
|
FrameStateLivenessStatistics | Boolean | false | Gather statistics on local variables and their lifetimes relative to
FrameStates.
|
FullUnrollAsPEACleanup | Boolean | true | Perform full unrolling as a Partial Escape Analysis Cleanup
|
FullUnrollCodeSizeBudgetFactorForLargeGraphs | Double | 2.0 | Maximum factor by which full unrolling can increase code size for large
graphs. The FullUnrollSmallGraphThreshold option determines which
graphs are small
|
FullUnrollCodeSizeBudgetFactorForSmallGraphs | Double | 10.0 | Maximum factor by which full unrolling can increase code size for small
graphs. The FullUnrollSmallGraphThreshold option determines which
graphs are small
|
FullUnrollConstantCompareBoost | Integer | 15 | |
FullUnrollMaxApplication | Integer | 60 | |
FullUnrollMaxIterations | Integer | 600 | |
FullUnrollMaxNodes | Integer | 700 | |
FullUnrollSmallGraphThreshold | Integer | 1000 | The threshold in terms of NodeSize for a graph to be considered small
for the purpose of full unrolling. Applied in conjunction with the
FullUnrollCodeSizeBudgetFactorForSmallGraphs and
FullUnrollCodeSizeBudgetFactorForLargeGraphs options.
|
FullUnroll | Boolean | true | |
G1ConcMarkStepDurationMillis | Double | 10.0 | Target duration of individual concurrent marking steps in milliseconds.
|
G1ConcRefinementThreads | Integer | 0 | The number of parallel remembered set update threads. Will be set
ergonomically by default.
|
G1ConfidencePercent | Integer | 50 | Confidence level for MMU/pause predictions.
|
G1HeapWastePercent | Integer | 5 | Amount of space, expressed as a percentage of the heap size, that G1 is
willing not to collect to avoid expensive GCs.
|
G1MixedGCCountTarget | Long | 8 | The target number of mixed GCs after a marking cycle.
|
G1PeriodicGCInterval | Long | 0 | Number of milliseconds after a previous GC to wait before triggering a
periodic gc. A value of zero disables periodically enforced gc cycles.
|
G1PeriodicGCInvokesConcurrent | Boolean | true | Determines the kind of periodic GC. Set to true to have G1 perform a
concurrent GC as periodic GC, otherwise use a STW Full GC.
|
G1PeriodicGCSystemLoadThreshold | Double | 0.0 | Maximum recent system wide load as returned by the 1m value of
getloadavg() at which G1 triggers a periodic GC. A load above this
value cancels a given periodic GC. A value of zero disables this check.
|
G1RSetUpdatingPauseTimePercent | Integer | 10 | A target percentage of time that is allowed to be spend on processing
remembered set update buffers during the collection pause.
|
G1RefProcDrainInterval | Integer | 1000 | The number of discovered reference objects to process before draining
concurrent marking work queues.
|
G1ReservePercent | Integer | 10 | It determines the minimum reserve we should have in the heap to
minimize the probability of promotion failure.
|
G1SATBBufferEnqueueingThresholdPercent | Integer | 60 | Before enqueueing them, each mutator thread tries to do some filtering
on the SATB buffers it generates. If post-filtering the percentage of
retained entries is over this threshold the buffer will be enqueued for
processing. A value of 0 specifies that mutator threads should not do
such filtering.
|
G1SATBBufferSize | Long | 1024 | Number of entries in an SATB log buffer.
|
G1UpdateBufferSize | Long | 256 | Size of an update buffer.
|
G1UseAdaptiveIHOP | Boolean | true | Adaptively adjust the initiating heap occupancy from the initial value
of InitiatingHeapOccupancyPercent. The policy attempts to start marking
in time based on application behavior.
|
G1UseConcRefinement | Boolean | true | Control whether concurrent refinement is performed. Disabling
effectively ignores G1RSetUpdatingPauseTimePercent.
|
G1VerifyHeapRegionCodeRoots | Boolean | false | Verify the code root lists attached to each heap region.
|
GCDebugStartCycle | Integer | -1 | Start tracing compiled GC barriers after N garbage collections
(disabled if N <= 0).
|
GCDrainStackTargetSize | Long | 64 | Number of entries we will try to leave on the stack during gc. G1 GC
only.
|
GCPauseIntervalMillis | Long | 201 | Time slice for MMU specification. G1 GC only.
|
GCTimeRatio | Long | 12 | Adaptive size policy application time to GC time ratio. G1 GC only.
|
GenJavaCodeFilter | String | null | Generate Java code before high tier lowering for methods that
MethodFilter.match this string.
|
GenJavaCodeSaveDirectory | String | null | Path for saving generated Java code. If the value is omitted the debug
dump path will be used.
|
GenJavaCodeWithComments | Boolean | false | Generate comments alongside variable declarations
|
GenLoopSafepoints | Boolean | true | |
GenericDynamicCounters | Boolean | false | Turn on the benchmark counters, and displays the results on VM shutdown
|
GraalArithmeticStubs | Boolean | true | Use Graal arithmetic stubs instead of HotSpot stubs where possible
|
GraalCompileOnly | String | null | A filter applied to a method the VM has selected for compilation by
Graal. A method not matching the filter is redirected to a lower tier
compiler. The filter format is the same as for the MethodFilter option.
|
GraphCompressionThreshold | Integer | 70 | Graal graph compression is performed when percent of live nodes falls
below this value
|
GuardHoistingLoopDuplicationHoistFraction | Double | 0.5 | Duplicate only loops where at least this fraction of guards can be
hoisted
|
GuardHoistingLoopDuplicationMaxSizeHotCode | Integer | 2048 | See GuardHoistingLoopDuplicationMaxSize
|
GuardHoistingLoopDuplicationMaxSize | Integer | 64 | Duplicate only loops up to this estimated size
|
GuardHoistingLoopDuplicationMinBodyIterationsHotCode | Integer | 0 | See GuardHoistingLoopDuplicationMinBodyIterations
|
GuardHoistingLoopDuplicationMinBodyIterations | Integer | 4 | Duplicate only loops with at least this many expected iterations of the
loop body
|
GuardHoistingLoopDuplicationMinHotness | Long | 1 | Duplicate only loops in methods executed at least this number of times
|
GuardHoistingLoopDuplication | Boolean | true | Duplicate certain loops and eliminate their guards
|
GuardPriorities | Boolean | true | |
HeapDumpOnOutOfMemoryError | Boolean | false | Dump heap to file (see HeapDumpPath) the first time the image throws
java.lang.OutOfMemoryError because it ran out of Java heap.
|
HeapDumpPath | String | "" | Path of the file or directory in which heap dumps are created. An empty
value means a default file name will be used. An existing directory
means the dump will be placed in the directory and have the default
file name.
|
HeapSizePerGCThread | Long | 44040192 | Size of heap (bytes) per GC thread used in calculating the number of GC
threads. G1 GC only.
|
HeapVerifierVerbosity | Integer | 0 | Control heap verifier verbosity level: 0 - quiet, 1 - info, 2 -
warning, 3 - all.
|
HighTierInversion | Boolean | false | |
HighTierPartialUnrolling | Boolean | true | Enable EE partial unrolling in high tier.
|
HotCodeMinSelfTime | Double | 0.001 | Minimal self time for a compilation unit to be considered hot globally.
|
HotSpotDeoptExplicitExceptions | Boolean | false | Testing only option that forces deopts for exception throws
|
HotSpotPostOnExceptions | Boolean | false | Testing only option that forces deopts for exception throws
|
HotSpotPrintInlining | Boolean | false | Print inlining optimizations
|
HybridStaticContext | Boolean | false | Enable hybrid context for static methods, i.e. uses invocation site as
context for static methods.
|
IgnoreBadDuplications | Boolean | true | Ignore duplications with a bad benefit cost relation.
|
IgnoreDeoptUsages | Boolean | true | |
ImageObjectTreeExpandRoots | String | "" | Override the default suppression of specified roots. See:
StaticAnalysisReports.md.
|
ImageObjectTreeExpandTypes | String | "" | Override the default suppression of specified types. See:
StaticAnalysisReports.md.
|
ImageObjectTreeSuppressRoots | String | "" | Suppress the expansion of specified roots. See:
StaticAnalysisReports.md.
|
ImageObjectTreeSuppressTypes | String | "" | Suppress the expansion of specified types. See:
StaticAnalysisReports.md.
|
InfeasiblePathCorrelationWindowSize | Integer | 10 | Limit of the number of dominating if nodes to consider in infeasible
path correlation to avoid compile time explosion.
|
InfeasiblePathCorrelation | Boolean | true | |
InitTimer | Boolean | false | Specifies if initialization timing is enabled.
|
InitialHeapSize | Long | 0 | Initial heap size (in bytes); zero means use ergonomics. G1 GC only.
|
InitialRAMPercentage | Double | 1.5625 | Percentage of real memory used for initial heap size. G1 GC only.
|
InitiatingHeapOccupancyPercent | Integer | 45 | The percent occupancy (IHOP) of the current old generation capacity
above which a concurrent mark cycle will be initiated. Its value may
change over time if adaptive IHOP is enabled, otherwise the value
remains constant. In the latter case a value of 0 will result as
frequent as possible concurrent marking cycles. A value of 100 disables
concurrent marking. Fragmentation waste in the old generation is not
considered free space in this calculation. G1 GC only.
|
InjectedCompilationDelay | Integer | 0 | The number of seconds by which to slow down each compilation. The
compilations slowed down can be restricted with MethodFilter. This
option exists to test the compilation watchdog.
|
InlineAllBonus | Double | 1.0 | The bonus applied to call nodes that can be fully inlined.
|
InlineBeforeAnalysis | Boolean | true | Inline methods before static analysis
|
InlineDuringParsingMaxDepth | Integer | 10 | Maximum depth when inlining during bytecode parsing.
|
InlineDuringParsing | Boolean | true | Inlines trivial methods during bytecode parsing.
|
InlineEverything | Boolean | false | |
InlineGraalStubs | Boolean | false | Embed all the emitted code for Graal-generated stubs.
|
InlineMegamorphicCalls | Boolean | true | Inline calls with megamorphic type profile (i.e., not all types could
be recorded).
|
InlineMonomorphicCalls | Boolean | true | Inline calls with monomorphic type profile.
|
InlinePartialIntrinsicExitDuringParsing | Boolean | true | Inlines partial intrinsic exits during bytecode parsing when possible.
A partial intrinsic exit is a call within an intrinsic to the method
being intrinsified and denotes semantics of the original method that
the intrinsic does not support.
|
InlinePolymorphicCalls | Boolean | true | Inline calls with polymorphic type profile.
|
InlineVTableStubs | Boolean | true | |
Inline | Boolean | true | Enable inlining
|
InlinedCompilerNodeLimit | Integer | 20000 | Controls the maximum number of compiler nodes that can be inlined into
the compiled method.
|
InliningCoefficient | Double | 0.02 | The coefficient used to compute the inlining threshold; the higher, the
more to inline.
|
InliningDepthError | Integer | 1000 | Maximum inlining depth during partial evaluation before reporting an
infinite recursion
|
InsertPreMainPostOnly | Boolean | false | Do not unroll the main loop, only create pre-main-post.
|
InspectGraphs | Boolean | false | Inspect analysis graphs.
|
InspectServerContentPath | String | "inspect" | Path to the contents of the Inspect web server.
|
InstallSegfaultHandler | Boolean | null | Install segfault handler that prints register contents and full Java
stacktrace. Default: enabled for an executable, disabled for a shared
library, disabled when EnableSignalHandling is disabled.
|
InterceptBailout | Boolean | false | Intercept also bailout exceptions
|
Intrinsify | Boolean | true | Use compiler intrinsifications.
|
InversionMinLocalFrequency | Double | 2.0 | Minimal loop frequency for a loop to be considered for inversion.
|
InversionMinRelativeFrequency | Double | 1.0 | Minimal relative frequency for a loop to be considered for inversion.
|
InvertMultiEndLoops | Boolean | false | |
InvertNonLeafLoops | Boolean | false | |
InvertVectorizableLoops | Boolean | false | |
IsolatedLoopHeaderAlignment | Integer | 32 | Alignment in bytes for loop header blocks that have no fall through
paths.
|
IterativePeelingLimit | Integer | 2 | Allow iterative peeling of loops up to this many times (each time the
peeling phase runs).
|
IterativePeelingOuterFrequencyBonusThreshold | Double | 4.0 | Allow iterative peeling of loops with an outer frequency bonus above
this value.
|
LIRDynMoveProfileMethod | Boolean | false | Enable dynamic move profiling per method.
|
LIRInstructionVerifierPath | String | null | Path to jar file containing LIR instruction verifier.
|
LIROptConstantLoadOptimization | Boolean | true | Enable constant load optimization.
|
LIROptControlFlowOptimizer | Boolean | true | |
LIROptEdgeMoveOptimizer | Boolean | true | |
LIROptLSRAEliminateSpillMoves | Boolean | true | Enable spill move elimination.
|
LIROptLSRAOptimizeSpillPosition | Boolean | true | Enable spill position optimization
|
LIROptLSStackSlotAllocator | Boolean | true | Use linear scan stack slot allocation.
|
LIROptNullCheckOptimizer | Boolean | true | |
LIROptRedundantMoveElimination | Boolean | true | |
LIROptStackMoveOptimizer | Boolean | true | |
LIROptimization | Boolean | true | Enable LIR level optimizations.
|
LIRProfileMethods | Boolean | false | Enables profiling of methods.
|
LIRProfileMoves | Boolean | false | Enables profiling of move types on LIR level. Move types are for
example stores (register to stack), constant loads (constant to
register) or copies (register to register).
|
LSRAOptSplitOnly | Boolean | false | LSRA optimization: Only split but do not reassign
|
LSRAOptimization | Boolean | false | Enable LSRA optimization
|
LargeChildrenCountPenaltyCoefficient | Double | 0.005 | Reduces the likelihood of exploring call graphs that have a lot of
children below the root.
|
LimitInlinedInvokes | Double | 5.0 | |
LimitObjectArrayLength | Boolean | false | Enable a limit for the number of objects recorded for each type of a
type state before disabling heap sensitivity for that type. The
analysis must be heap sensitive.
|
ListMetrics | Boolean | false | Lists on the console at VM shutdown the metric names available to the
Timers, Counters and MemUseTrackers options. Note that this only lists
the metrics that were initialized during the VM execution and so will
not include metrics for compiler code that is not executed.
|
LoadExceptionObjectInVM | Boolean | false | Use a VM runtime call to load and clear the exception object from the
thread at the start of a compiled exception handler.
|
LoadProfiles | String | null | Load per compilation profile information.
|
LocalsPerCounter | Integer | 16 | Number of cpu locals per counter. It has to be a power of 2.
|
LogFile | String | null | File to which logging is sent. A %p in the name will be replaced with a
string identifying the process, usually the process id and %t will be
replaced by System.currentTimeMillis(). If the current runtime is in an
isolate, then %i will be replaced by '' otherwise %i is
removed. An %I is the same as %i except that the replacement is
'@'. Using %o as filename sends logging to
System.out whereas %e sends logging to System.err.
|
LogVerbose | Boolean | false | Enable more verbose log output when available
|
Log | String | null | Pattern for specifying scopes in which logging is enabled. See the Dump
option for the pattern syntax.
|
LoopBoundOptimizationPhase | Boolean | true | Try to improve counted loop detection by finding more precise loop
bounds.
|
LoopExitVsLoopEndFrequencyDiff | Double | 1000.0 | Scaling factor of frequency difference computed based on loop ends or
exits
|
LoopHeaderAlignment | Integer | 16 | Alignment in bytes for loop header blocks.
|
LoopInversion | Boolean | true | |
LoopMaxUnswitch | Integer | 3 | |
LoopOnFatalError | Boolean | false | Execute an endless loop before printing diagnostics for a fatal error.
|
LoopPeeling | Boolean | true | |
LoopPredicationMainPath | Boolean | true | Restricts LoopPredication to only focus on array bounds checks that
dominate the back edge of a loop.
|
LoopPredication | Boolean | true | Hoists array bounds checks out of simple loops. This is ignored if
SpeculativeGuardMovement is enabled.
|
LoopRotationAssertCountedAfter | Boolean | false | |
LoopRotationToxicNodeSetMaxNodecost | Integer | 512 | Maximum size in NodeSize of the code to be duplicated during rotation.
|
LoopRotation | Boolean | true | Enable Loop Rotation to let the compiler detect more loops as counted.
|
LoopUnswitchFrequencyBoost | Double | 20.0 | Number of nodes allowed for a loop unswitching per loop frequency. The
number of nodes allowed for the unswitching is proportional to the
relative frequency of the loop by this constant.
|
LoopUnswitchFrequencyMaxFactor | Double | 0.95 | Maximun value for the frequency factor of an invariant.
|
LoopUnswitchFrequencyMinFactor | Double | 0.05 | Minimum value for the frequency factor of an invariant.
|
LoopUnswitchMaxIncrease | Integer | 2000 | Maximum loop unswitching code size increase in nodes.
|
LoopUnswitchMinSplitFrequency | Double | 1.0 | Lower bound for the minimun frequency of an invariant condition to be
unswitched.
|
LoopUnswitchTrivial | Integer | 20 | Number of nodes allowed for a loop unswitching regardless of the loop
frequency.
|
LoopUnswitch | Boolean | true | |
LoopVectorizationKeepPostLoop | Boolean | false | Keep the original loop as the post-loop during loop vectorization
|
MarkStackSizeMax | Long | 536870912 | Maximum size of marking stack. G1 GC only.
|
MarkStackSize | Long | 4194304 | Size of marking stack. G1 GC only.
|
MatchExpressions | Boolean | true | Allow backend to match complex expressions.
|
MaxCallingContextDepth | Integer | 0 | The maximum length of the methods context chains.
|
MaxCallingContextWidth | Integer | 0 | The maximum number of contexts to record for a method. It only affects
the analysis when the max and min calling context depth are different.
|
MaxCompilationProblemsPerAction | Integer | 2 | The maximum number of compilation failures to handle with the action
specified by CompilationFailureAction before changing to a less verbose
action. This does not apply to the ExitVM action.
|
MaxConstantObjectsPerType | Integer | 0 | The maximum number of constant objects recorded for each type before
merging the constants into one unique constant object per type. If the
value is 0 there is no limit.
|
MaxDirectMemorySize | Long | 0 | Maximum total size of NIO direct-buffer allocations
|
MaxDuplicationAnchor | Integer | 2147483647 | Maximum duplication anchor number
|
MaxDuplicationFactor | Double | 2.0 | Max amount of extra effort to expend handling irreducible loops. A
value <= 1 disables support for irreducible loops.
|
MaxGCPauseMillis | Long | 200 | Adaptive size policy maximum GC pause time goal in millisecond, or the
maximum GC time per MMU time slice. G1 GC only.
|
MaxGraphSizeNodeCost | Integer | 100000 | Maximum node cost graph size for duplication. If a graph is bigger
duplication will stop.
|
MaxHeapContextDepth | Integer | 0 | The maximum length of the context used to model a heap object in
addition to the allocation site; used only when ContextSensitiveHeap is
enabled.
|
MaxHeapContextWidth | Integer | 0 | The maximum number of contexts to record for a heap object. It only
affects the analysis when the max and min calling context depth are
different.
|
MaxHeapFree | Long | 0 | The maximum free bytes reserved for allocations, in bytes (0 for
automatic according to GC policy). Serial GC only.
|
MaxHeapSize | Long | 0 | The maximum heap size at run-time, in bytes.
|
MaxJavaStackTraceDepth | Integer | 1024 | The maximum number of lines in the stack trace for Java exceptions (0
means all)
|
MaxMispredictionCostIncreaseFactor | Double | 2.0 | Abstract measure of the cost of branch misprediction. Higher values
make generation of conditional moves more likely.
|
MaxNewSize | Long | 0 | The maximum size of the young generation at run-time, in bytes
|
MaxObjectSetSize | Integer | 100 | The maximum number of objects recorded for each type of a type state
before disabling heap sensitivity for that type. The analysis must be
heap sensitive. It has a minimum value of 1.
|
MaxPolymorphicDispatches | Integer | 4 | The maximum number of dispatches in guarded polymorphic inlining.
|
MaxPriorityInliningPeelingIterations | Integer | 10 | Max number of precise inlining peeling iterations.
|
MaxRAMPercentage | Double | 25.0 | Maximum percentage of real memory used for maximum heap size. G1 GC
only.
|
MaxRAM | Long | 0 | Physical memory size (in bytes). By default, the value is queried from
the OS/container during VM startup.
|
MaxSimulationIterationsHotCode | Integer | 4 | See MaxSimulationIterations.
|
MaxSimulationIterations | Integer | 2 | Maximum simulation-duplication iterations of the duplication
optimization per invocation.
|
MaxSplitsPerNode | Integer | 32 | |
MaxTemplatesPerSnippet | Integer | 50 | |
MaxTenuringThreshold | Long | 15 | Maximum value for tenuring threshold. G1 GC only.
|
MaxUnswitchSuccessors | Integer | 64 | Maximum number of split successors before aborting unswitching.
|
MaxVectorAlignmentUnroll | Integer | 4 | Maximum number of unrolled alignment instructions
|
MaxVectorUnroll | Integer | 16 | Maximum length of linear-code vector operations
|
MaximumDesiredSize | Integer | 20000 | Maximum desired size of the compiler graph in nodes.
|
MaximumEscapeAnalysisArrayLength | Integer | 128 | The maximum length of an array that will be escape analyzed.
|
MaximumHeapSizePercent | Integer | 80 | The maximum heap size as percent of physical memory. Serial and epsilon
GC only.
|
MaximumInliningSize | Integer | 300 | Inlining is explored up to this number of nodes in the graph for each
call site.
|
MaximumLoopExplosionCount | Integer | 10000 | Max number of loop explosions per method.
|
MaximumRecursiveInlining | Integer | 5 | Maximum level of recursive inlining.
|
MaximumTransitiveEnabledPullFactor | Integer | 2 | PullThroughPhiOptimization: Maximum number of algorithm iterations per
optimization invocation.
|
MaximumYoungGenerationSizePercent | Integer | 10 | The maximum size of the young generation as a percentage of the maximum
heap size. Serial and epsilon GC only.
|
MegamorphicInliningMinMethodProbability | Double | 0.33 | Minimum probability for methods to be inlined for megamorphic type
profiles.
|
MemUseTrackers | String | null | Comma separated names of memory usage trackers that are enabled
irrespective of the value for TrackMemUse option. An empty value
enables all memory usage trackers unconditionally.
|
MethodFilterRootOnly | Boolean | false | Only check MethodFilter against the root method in the context if true,
otherwise check all methods
|
MethodFilter | String | null | Pattern for matching methods. The syntax for a pattern is:
SourcePatterns = SourcePattern ["," SourcePatterns] .
SourcePattern = [ "~" ] [ Class "." ] method [ "(" [ Parameter { ";" Parameter } ] ")" ] .
Parameter = Class | "int" | "long" | "float" | "double" | "short" | "char" | "boolean" .
Class = { package "." } class .
Glob pattern matching (*, ?) is allowed in all parts of the source pattern.
The "~" prefix negates the pattern.
Positive patterns are joined by an "or" operator: "A,B" matches anything
matched by "A" or "B". Negative patterns are joined by "and not": "~A,~B"
matches anything not matched by "A" and not matched by "B". "A,~B,~C,D"
matches anything matched by "A" or "D" and not matched by "B" and not
matched by "C".
A set of patterns containing negative patterns but no positive ones contains
an implicit positive "*" pattern: "~A,~B" is equivalent to "*,~A,~B".
Examples of method filters:
---------
*
Matches all methods in all classes.
---------
canonical(CanonicalizerTool;LogicNode;LogicNode)
Matches all methods named "canonical", with the first parameter of type
"CanonicalizerTool", and the second and third parameters of type
"LogicNode".
The packages of the parameter types are irrelevant.
---------
arraycopy(Object;;;;)
Matches all methods named "arraycopy", with the first parameter
of type "Object", and four more parameters of any type. The
packages of the parameter types are irrelevant.
---------
List.set
Matches all methods named "set" in a class whose simple name is "List".
---------
*List.set
Matches all methods named "set" in a class whose simple name ends with "List".
---------
org.graalvm.compiler.nodes.PhiNode.*
Matches all methods in the class "org.graalvm.compiler.nodes.PhiNode".
---------
org.graalvm.compiler.nodes.*.canonical
Matches all methods named "canonical" in classes in the package
"org.graalvm.compiler.nodes".
---------
arraycopy,toString
Matches all methods named "arraycopy" or "toString", meaning that ',' acts
as an "or" operator.
---------
java.util.*.*.,~java.util.*Array*.*
java.util.*.*.,~*Array*.*
These patterns are equivalent and match all methods in the package
"java.util" except for classes that have "Array" in their name.
---------
~java.util.*.*
Matches all methods in all classes in all packages except for anything in
the "java.util" package.
|
MethodInlineBailoutLimit | Integer | 5000 | Per-compilation method inlining exploration limit before giving up (use
0 to disable)
|
MetricsFile | String | null | File to which metrics are dumped per compilation.
A CSV format is used if the file ends with .csv otherwise a more
human readable format is used. The fields in the CSV format are:
compilable - method being compiled
compilable_identity - identity hash code of compilable
compilation_nr - where this compilation lies in the ordered
sequence of all compilations identified by
compilable_identity
compilation_id - runtime issued identifier for the compilation
metric_name - name of metric
metric_value - value of metric
|
MidTierInversion | Boolean | true | |
MidTierPartialUnrolling | Boolean | true | Enable EE partial unrolling in mid tier.
|
MinBlockFrequencyPull | Double | 0.66 | PullThroughPhiOptimization: Ignore low frequency branches during
duplication.
|
MinCallingContextDepth | Integer | 0 | The minimum length of the methods context chains.
|
MinDuplicationAnchor | Integer | 1 | Skip n duplication anchors
|
MinHeapContextDepth | Integer | 0 | The minimum length of the context used to model a heap object in
addition to the allocation site; used only when ContextSensitiveHeap is
enabled.
|
MinHeapDeltaBytes | Long | 172032 | The minimum change in heap space due to GC (in bytes). G1 GC only.
|
MinHeapFreeRatio | Long | 40 | The minimum percentage of heap free after GC to avoid expansion. G1 GC
only.
|
MinHeapSize | Long | 0 | The minimum heap size at run-time, in bytes.
|
MinPolymorphicDispatchProbability | Double | 0.1 | The minimum probability for using a dispatch in guarded polymorphic
inlining.
|
MinRAMPercentage | Double | 50.0 | Minimum percentage of real memory used for maximum heap size on systems
with small physical memory size. G1 GC only.
|
MinTLABSize | Long | 2048 | Minimum allowed TLAB size (in bytes). G1 GC only.
|
MinifyInvertedPhis | Boolean | true | Break chained phis
|
MinimalBulkZeroingSize | Integer | 2048 | If applicable, use bulk zeroing instructions when the zeroing size in
bytes exceeds this threshold.
|
MinimalGraphNodeSizeCheckSize | Integer | 1000 | Minimal size in NodeSize to check the graph size increases of phases.
|
MinimalRegions | Boolean | true | Try to reduce duplication code size to the minimal amount of code.
|
MinimumBlindedConstantSize | Integer | 4 | Minimum size (in bytes) of constants to blind.
|
MinimumPeelFrequency | Float | 0.35 | |
MoveGuardsUpwards | Boolean | true | Move guard nodes to earlier places in the dominator tree if all
successors of basic block share a common guard condition.
|
MultiExitCostFactorSink | Integer | 2 | Cost/Benefit heuristic for EE unrolling: If a loop has multiple exits,
cost is increased by this value for every sinking loop exit.
|
MultiExitCostFactor | Integer | 32 | Cost/Benefit heuristic for EE unrolling: If a loop has multiple exits,
cost is increased by this value for every none-sinking loop exit.
|
NDCV | Integer | 0 | Run level for NoDeadCodeVerifyHandler (0 = off, 1 = info, 2 = verbose,
3 = fatal)
|
NewRatio | Long | 2 | Ratio of old/new generation sizes. G1 GC only.
|
NewSize | Long | 1048576 | Initial new generation size (in bytes). G1 GC only.
|
NonCountedStripMinedBenefitBoost | Integer | 64 | Benefit boost for strip mined non counted loops.
|
NonCountedStripMiningBudgetHotCode | Double | 2.5 | See NonCountedStripMiningBudget.
|
NonCountedStripMiningBudget | Double | 0.1 | Code size budget of the non-counted strip mining transformation in
terms of NodeCostSize.
|
NonCountedStripMiningForceStripAll | Boolean | false | Force non-counted strip mining for all loops (also counted ones), test
flag only.
|
NonCountedStripMiningIgnoreSmallLoops | Boolean | true | Ignore small loops from strip mining, the iv overhead can cause
slowdowns.
|
NonCountedStripMiningInnerLoopTrips | Integer | -1 | The max number of iterations the counted inner loop takes. If -1, the
frequency of the loop will be used to derive an inner frequency.
|
NonCountedStripMiningMaximumInnerLoopTrips | Integer | 8192 | If NonCountedStripMiningInnerLoopTrips == -1: Maximum loop trips for
strip mined non-counted loops.
|
NonCountedStripMiningMinFrequency | Double | 16.0 | Minimal loop frequency to consider a non-counted loop for strip mining.
|
NonCountedStripMiningMinimumInnerLoopTrips | Integer | 512 | If NonCountedStripMiningInnerLoopTrips == -1: Minimum loop trips for
strip mined non-counted loops.
|
NonCountedStripMiningReuseIVs | Boolean | true | Try to reuse pre-existing induction variables inside non-counted loops
for the strip-mined loop's exit check.
|
ObjdumpExecutables | String | null | Comma separated list of candidate GNU objdump executables. If not
specified, disassembling via GNU objdump is disabled. Otherwise, the
first existing executable in the list is used.
|
OldPLABSize | Long | 1024 | Size of old gen promotion LAB's (in HeapWords). G1 GC only.
|
OldSize | Long | 5242880 | Initial tenured generation size (in bytes). G1 GC only.
|
OmitHotExceptionStacktrace | Boolean | false | |
OnShutdownCallback | String | null | The fully qualified name of a no-arg, void, static method to be invoked
in HotSpot from libgraal when the libgraal isolate is being
shutdown.This option exists for the purpose of testing callbacks in
this context.
|
OptAssumptions | Boolean | true | |
OptBulkAllocation | Boolean | true | |
OptCompressedFrameStateValues | Boolean | true | |
OptConditionalMoves | Boolean | true | Optimize simple if branches with conditional moves
|
OptConvertDeoptsToGuards | Boolean | true | |
OptDeDuplication | Boolean | true | |
OptDeoptimizationGrouping | Boolean | true | |
OptDevirtualizeInvokesOptimistically | Boolean | true | |
OptDuplication | Boolean | true | |
OptEarlyReadElimination | Boolean | true | |
OptEliminateGuards | Boolean | true | |
OptExactArithmetic | Boolean | true | |
OptFastMonitorExit | Boolean | true | Straighten monitor enter/exit paths through duplication
|
OptFloatingReads | Boolean | true | |
OptGuardRangeGrouping | Boolean | true | |
OptImplicitNullChecks | Boolean | true | |
OptLockElimination | Boolean | true | |
OptLoopPhiStamps | Boolean | true | Inject stamps on induction variables.
|
OptMethodDuplication | Boolean | false | Duplicate methods to form hot part and cold part areas.
|
OptPropagateEquality | Boolean | true | Propagate equality into dominated nodes.
|
OptPullThroughPhi | Boolean | true | |
OptReadElimination | Boolean | true | |
OptScheduleOutOfLoops | Boolean | true | |
OptStringConcatDumpUnhandled | Boolean | false | Dump graphs to help debug operation
|
OptStringConcatDump | Boolean | false | Dump graphs to help debug operation
|
OptStringConcat | Boolean | true | Optimize StringBuilder construction
|
OptWriteBarrierElimination | Boolean | true | Eliminate redundant write barriers.
|
OptWriteMotion | Boolean | false | Perform write sinking, which moves writes inside loops after them,
effectively reducing their frequency.
|
OptimisticAliasingAnalysis | Boolean | true | |
OptimisticAliasingUseSpeculation | Boolean | true | Use speculation and deoptimization in optimistic aliasing analysis.
|
OptimizationLogPath | String | null | Path to the directory where the optimization log is saved if
OptimizationLog is set to Directory. Directories are created if they do
no exist.
|
OptimizationLog | EconomicSet | null | Enable the structured optimization log and specify where it is printed.
The accepted values are:
Directory - Format the structured optimization log as JSON and print it to files in a directory.
The directory is specified by OptimizationLogPath. If OptimizationLogPath is not set,
the target directory is DumpPath/optimization_log.
Stdout - Print the structured optimization log to the standard output.
Dump - Dump optimization trees for IdealGraphVisualizer according to the PrintGraph option.
It is possible to specify multiple comma-separated values.
|
OptimizeLoopAccesses | Boolean | true | Enable access node optimizations for loops
|
OptimizeReturnedParameter | Boolean | true | Analysis: Detect methods that return one of their parameters and
hardwire the parameter straight to the return.
|
OptimizeVectorAPI | Boolean | true | Expand Vector API operations to optimized machine instructions
|
OverrideProfiles | Boolean | false | Allow multiple compilations of the same method by overriding existing
profiles.
|
PLABWeight | Integer | 75 | Percentage (0-100) used to weight the current sample when computing
exponentially decaying average for ResizePLAB. G1 GC only.
|
ParGCArrayScanChunk | Integer | 50 | Scan a subset of object array and push remainder, if array is bigger
than this. G1 GC only.
|
ParallelGCBufferWastePct | Integer | 10 | Wasted fraction of parallel allocation buffer. G1 GC only.
|
ParallelGCThreads | Integer | 0 | Number of parallel threads G1 will use.
|
ParallelRefProcBalancingEnabled | Boolean | true | Enable balancing of reference processing queues. G1 GC only.
|
ParallelRefProcEnabled | Boolean | false | Enable parallel reference processing whenever possible. G1 GC only.
|
ParsingContextMaxDepth | Integer | 100 | Limit the parsing context depth. Default value is arbitrary set at 100.
|
PartialEscapeAnalysis | Boolean | true | |
PartialRedundancyElimination | Boolean | true | Enable partial redundancy elimination
|
PartialUnrollCostReductionFactorHighTier | Integer | 2 | Cost/Benefit heuristic for EE unrolling in high tier: reduce cost by a
constant factor when comparing with relative benefit.
|
PartialUnrollCostReductionFactorHotCodeMidTier | Integer | 32 | See PartialUnrollCostReductionFactorMidTier
|
PartialUnrollCostReductionFactorMidTier | Integer | 8 | Cost/Benefit heuristic for EE unrolling in mid tier: reduce cost by a
constant factor when comparing with relative benefit.
|
PartialUnrollMaxIterationsHighTier | Integer | 4 | Maximum number of iterations to unroll for a high tier main loop.
|
PartialUnrollMaxIterationsMidTier | Integer | 16 | Maximum number of iterations to unroll for a mid tier main loop.
|
PartialUnrollMaxSizeHighTier | Integer | 256 | Maximum node cost size of a loop to be considered for high tier
unrolling.
|
PartialUnrollMaxSizeHotCodeMidTier | Integer | 1024 | See PartialUnrollMaxSizeMidTier
|
PartialUnrollMaxSizeMidTier | Integer | 256 | Maximum node cost size of a loop to be considered for mid tier tier
unrolling.
|
PartialUnrollMinFrequency | Integer | 4 | Minimal loop frequency to consider a loop for partial unrolling
|
PartialUnroll | Boolean | true | |
PathProfileCutThreshold | Integer | 10 | The limit on the number of paths at control-flow merges. Decreasing
this value reduces the number of paths, but also shortens them.
|
PathProfileDumpFile | String | null | Dump information for path profile (null or file name). If set to null,
then dumping is disabled.
|
PathProfileFrequentThreshold | Long | 500 | Maximum acceptable number of paths coming from the inbound of a merge
if both of them are frequent.
|
PathProfileGlobalLowFrequencyRatio | Double | 0.1 | If some block's relative frequency drops below this number times the
maximum relative frequency in the graph, then the block is considered
infrequent.
|
PathProfileLocalLowFrequencyRatio | Double | 10.0 | If the ratio of the merge's frequency with its inbound's frequency is
greater than this threshold, then the inbound is considered infrequent.
|
PathProfileMaxTotalCounters | Integer | 4000000 | Maximum number of counters to use in path profiling for all
instrumented methods.
|
PathProfilePolicy | String | None | Enable or disable the path-profiling algorithm. If it enables it, it
also allows to select which mode to execute.
|
PathProfileRegenerate | Boolean | false | Controls whether the path-regeneration algorithm is executed.
|
PeelALot | Boolean | false | Stress test for the loop peeling optimization by applying it
aggressively
|
PeelOnlyLoopWithNodeID | Integer | -1 | Peel only the loop with the specific loop begin node ID for debugging
purposes
|
PeelingConsideredMinLoopIterations | Double | 1.5 | Minimal loop body iterations necessary to consider peeling.
|
PeelingConsideredMinRelativeFrequency | Double | 4.0 | Minimal relative frequency of loop begin necessary to consider peeling.
|
PeelingHighTierCostReductionFactor | Double | 64.0 | Cost/Benefit heuristic for EE simulation-based loop peeling in high
tier: reduce cost by a constant factor when comparing with relative
benefit.
|
PeelingMidTierCostReductionFactor | Double | 8.0 | Cost/Benefit heuristic for EE simulation-based loop peeling in mid
tier: reduce cost by a constant factor when comparing with relative
benefit.
|
PenalizeComplexLoopControlFlow | Boolean | true | Increase the cost of duplicating control flow splits inside loops if
they are not foldable.The generally tend to complicate control flow and
generate worse code in the backend.
|
PercentTimeInIncrementalCollection | Integer | 50 | Percentage of total collection time that should be spent on young
generation collections. Serial GC with collection policy
'BySpaceAndTime' only.
|
PerfDataMemorySize | Integer | 32768 | Size of performance data memory region. Will be rounded up to a
multiple of the native os page size.
|
PerfDataSamplingInterval | Integer | 200 | Jvmstat instrumentation sampling interval (in milliseconds)
|
PerfMaxStringConstLength | Integer | 1024 | Maximum PerfStringConstant string length before truncation
|
PhiMinificationMinimalLoopFrequency | Double | 2.0 | Minimal loop frequency to consider a loop for inverted phi minifaction.
|
PreTouchParallelChunkSize | Long | 1073741824 | Per-thread chunk size for parallel memory pre-touch. G1 GC only.
|
PreferUnsignedComparison | Boolean | true | Rewrite signed comparisons to unsigned ones if the result is equal.
|
PrefetchCopyIntervalInBytes | Long | -1 | How far ahead to prefetch destination area (<= 0 means off). G1 GC
only.
|
PrefetchScanIntervalInBytes | Long | -1 | How far ahead to prefetch scan area (<= 0 means off). G1 GC only.
|
PrintAnalysisCallTreeType | String | TXT | Change the output format of the analysis call tree, available options
are TXT and CSV. See: Reports.md.
|
PrintAnalysisCallTree | Boolean | false | Print analysis call tree, a breadth-first tree reduction of the call
graph.
|
PrintAnalysisStatistics | Boolean | false | Print analysis results statistics.
|
PrintBBInfo | Boolean | false | Enables dumping of basic blocks relative PC and frequencies in the dump
directory.
|
PrintBackendCFG | Boolean | false | Enable dumping scheduled HIR, LIR, register allocation and code
generation info to the C1Visualizer.
|
PrintBlockMapping | Boolean | false | Enable dumping CFG built during initial BciBlockMapping
|
PrintCallEdges | Boolean | false | Print call edges with other analysis results statistics.
|
PrintCanonicalGraphStringFlavor | Integer | 0 | Choose format used when dumping canonical text for graphs: 0 gives a
scheduled graph (better for spotting changes involving the schedule)
while 1 gives a CFG containing expressions rooted at fixed nodes
(better for spotting small structure differences)
|
PrintCanonicalGraphStrings | Boolean | false | Enable dumping canonical text from for graphs.
|
PrintCompilation | Boolean | false | Print an informational line to the console for each completed
compilation.
|
PrintConfig | Boolean | false | Prints VM configuration available via JVMCI.
|
PrintDetailedAllocationProfiling | Boolean | true | Print detailed information for each allocation site
|
PrintFlagsWithExtraHelp | String | null | Print extra help, if available, based on comma-separated option names.
Pass * to show all options that contain extra help.
|
PrintFlags | String | null | Show available options based on comma-separated option-types (allowed
categories: User, Expert, Debug).
|
PrintGCSummary | Boolean | false | Print summary GC information after application main method returns.
Serial GC only.
|
PrintGCTimeStamps | Boolean | false | Deprecated. Print a time stamp at each collection, if +PrintGC or
+VerboseGC. Serial GC only.
|
PrintGCTimes | Boolean | false | Print the time for each of the phases of each collection, if
+VerboseGC. Serial GC only.
|
PrintGC | Boolean | false | Print summary GC information after each collection.
|
PrintGraphFile | Boolean | true | Setting to true sets PrintGraph=file, setting to false sets
PrintGraph=network
|
PrintGraphHost | String | "127.0.0.1" | Host part of the address to which graphs are dumped.
|
PrintGraphPort | Integer | 4445 | Port part of the address to which graphs are dumped in binary format.
|
PrintGraphStateDiff | Boolean | false | Prints the difference in the graph state caused by each phase of the
suite.
|
PrintGraphWithSchedule | Boolean | false | Schedule graphs as they are dumped.
|
PrintGraph | String | File | Where IdealGraphVisualizer graph dumps triggered by Dump or DumpOnError
should be written.
The accepted values are:
File - Dump IGV graphs to the local file system (see DumpPath).
Network - Dump IGV graphs to the network destination specified by PrintGraphHost and PrintGraphPort.
If a network connection cannot be opened, dumping falls back to file dumping.
Disable - Do not dump IGV graphs.
|
PrintIRWithLIR | Boolean | false | Print HIR along side LIR as the latter is generated
|
PrintImageObjectTree | Boolean | false | Print image object hierarchy.
|
PrintLIRWithAssembly | Boolean | false | Include the LIR as comments with the final assembly.
|
PrintLoweringScheduleToTTY | Boolean | false | Print schedule result pre lowering to TTY.
|
PrintPointsToStatistics | Boolean | false | Report analysis statistics.
|
PrintProfileLoading | Boolean | false | Print to stdout when a profile is loaded.
|
PrintProfilingInformation | Boolean | false | Print profiling information when parsing a method's bytecode
|
PrintSynchronizedAnalysis | Boolean | false | Print types used for Java synchronization.
|
PrintUnmodifiedGraphs | Boolean | true | Dump a graph even if it has not changed since it was last dumped.
Change detection is based on adding and deleting nodes or changing
inputs.
|
PriorityForceInline | String | null | Unconditionally inline all methods matching the pattern using the
priority-based inliner. See the MethodFilter option for a description
of the pattern syntax.
|
PriorityInliningPolicy | String | "" | The policy to use, must be empty for automatic resolution.
|
PriorityInliningTuningPolicy | String | "DomainSpecific" | Comma-separated list of analysis policies for exploring the methods in
the call graph and for inlining, empty for no policy.
|
PriorityNeverInline | String | null | Never inline methods matching the pattern using the priority-based
inliner. See the MethodFilter option for a description of the pattern
syntax.
|
ProfileAllocationsContext | String | AllocatingMethod | Control the naming and granularity of the counters when using
ProfileAllocations.
The accepted values are:
AllocatingMethod - a counter per method
InstanceOrArray - one counter for all instance allocations and
one counter for all array allocations
AllocatedType - one counter per allocated type
AllocatedTypesInMethod - one counter per allocated type, per method
|
ProfileAllocations | Boolean | false | Enable profiling of allocation sites.
|
ProfileAnalysisOperations | Boolean | false | Track the progress of the static analysis.
|
ProfileCompiledMethods | Boolean | false | |
ProfileConstantObjects | Boolean | false | Track the creation of constant objects.
|
ProfileLockElimination | Boolean | false | |
ProfileMethodFilter | String | null | Restrict saving or loading of profiles based on this filter. See the
MethodFilter option for the pattern syntax.
|
ProfileMonitors | Boolean | false | Enable profiling of monitor operations.
|
ProfileOptBulkAllocation | Boolean | false | |
ProfileSelfTime | Boolean | true | Excludes time spent in invoked methods; measures total time including
subcalls when turned off.
|
ProfilesDumpFile | String | "default.iprof" | Value should point to a profile dump file.
|
ProfilingDumpPeriod | Integer | -1 | Integer greater than zero representing the duration in seconds that
will be used to trigger a profile dump. Any integer less than one
disables periodic dumps.
|
ProfilingDumpVerbose | Boolean | false | Emit a message to stderr after dumping a profile.
|
PropagateEqualityDepth | Integer | 6 | Maximum depth of dependency when propagating equals property.
|
PruneLargeDominatorUsageTrees | Boolean | true | |
PullThroughPhiCodeSizeIncreaseHotCode | Double | 2.5 | See PullThroughPhiCodeSizeIncrease
|
PullThroughPhiCodeSizeIncrease | Double | 0.1 | PullThroughPhiOptimization: Percentage in node cost graph size for the
floating node duplication budget. Computed relative to the method's
graph size.
|
QueuedAllocationWarningCount | Long | 0 | Number of times an allocation that queues behind a GC will retry before
printing a warning. G1 GC only.
|
RawConditionalElimination | Boolean | true | |
ReadEliminationMaxLoopVisits | Integer | 5 | |
ReadProxySchedulingStrategy | String | LATEST_OUT_OF_LOOPS | Chose the scheduling strategy for inserting the read proxies.
|
ReassociateExpressions | Boolean | true | Re-associate loop invariants and constants.
|
ReduceDCE | Boolean | true | Disable optional dead code eliminations
|
RegisterPressure | String | null | Comma separated list of registers that register allocation is limited
to.
|
RelativeBenefitInliningCoefficient | Double | 0.001 | The coefficient used to compute the inlining threshold; the higher, the
hard to inline.
|
RelaxTypeFlowStateConstraints | Boolean | true | Allow a type flow state to contain types not compatible with its
declared type.
|
RemoveLoopSafepoints | Boolean | true | Remove safepoints on counted loop ends.
|
RemoveNeverExecutedCode | Boolean | true | |
RemoveSaturatedTypeFlows | Boolean | true | Enable the type flow saturation analysis performance optimization.
|
ReplaceInputsWithConstantsBasedOnStamps | Boolean | true | |
ReservedAddressSpaceSize | Long | 0 | Default size in bytes of the address space to reserve.
|
ResizePLAB | Boolean | true | Dynamically resize (survivor space) promotion LAB's. G1 GC only.
|
ResizeTLAB | Boolean | true | Dynamically resize TLAB size for threads. G1 GC only.
|
RespectVectorization | Boolean | true | Try avoid unrolling vectorizable loops.
|
RewriteStripMinedCounterTo32Bit | Boolean | true | Rewrite the counter of a strip mined loop to have a 32bit type.
|
RootSizePenaltyCoefficient | Double | 0.1 | Reduces likelihood of spending a lot of time inlining when the IR is
already large.
|
RootSizePenaltyTypicalGraphSize | Integer | 3250 | At what size of the root IR graph do we start to consider applying a
exploration penalty.
|
RotateNonLeafLoops | Boolean | false | |
RotationMinLocalFrequency | Double | 2.0 | Minimal loop frequency for a loop to be considered for rotation.
|
RotationMinRelativeFrequency | Double | 1.0 | Minimal relative frequency for a loop to be considered for rotation.
|
SIMDArithmeticReduceMinLength | Integer | 16 | Minimum vector length for matching SIMD arithmetic reduce patterns.
|
SIMDVectorizationCheckLoadGroupProfitability | Boolean | true | Check for profitability when grouping memory loads to SIMD loads.
|
SIMDVectorizationDirectLoadStore | Boolean | false | Allow SIMDVectorization to vectorize load to store opportunities when
there are no matching SIMD operations between load and store
|
SIMDVectorizationSingletons | Boolean | false | Enable matching of singleton groups to increase corner-case matching
|
SIMDVectorizationVolatileLoads | Boolean | false | Allow load grouping to include grouping of volatile loads. Note
currently this may generate incorrect results.
|
SIMDVectorizationVolatileWrites | Boolean | false | Allow store grouping to include grouping of volatile writes. Note
currently this may generate incorrect results.
|
SIMDVectorizationWindowSize | Integer | 4 | Set the number of dominating and dominated blocks scanned per block
|
SafepointPromptnessFailureNanos | Long | 0 | Exit the VM if I can not come to a safepoint in this many nanoseconds.
0 implies forever.
|
SafepointPromptnessWarningNanos | Long | 0 | Print a warning if I can not come to a safepoint in this many
nanoseconds. 0 implies forever.
|
SaveProfilesPath | String | null | Path for saving compilation profiles. If the value is omitted the debug
dump path will be used.
|
SaveProfiles | Boolean | false | Save per compilation profile information.
|
ScanObjectsParallel | Boolean | true | Object scanning in parallel
|
ScheduledDuplicationSimulation | Boolean | false | Simulation can either only process fixed nodes or schedule the graph
and also process floating nodes.
|
ShowConfiguration | String | none | Writes to the VM log information about the compiler configuration
selected.
|
ShowDumpFiles | Boolean | false | Print the name of each dump file path as it's created.
|
ShowSubstitutionSourceInfo | Boolean | false | Controls whether the source position information of snippets and method
substitutions are exposed to HotSpot. Can be useful when profiling to
get more precise position information.
|
SimpleFastInflatedLocking | Boolean | true | Handle simple cases for inflated monitors in the fast-path.
|
SimulationBasedLoopPeeling | Boolean | true | Use DBDS algorithm to simulate the impact of peeling on a loop.
|
SimulationPruneUnlikelyBranches | Boolean | true | Ignore low frequency branches during simulation.
|
SmallCompiledLowLevelGraphSize | Integer | 330 | If the previous low-level graph size of the method exceeds the
threshold, it is not inlined.
|
SmallGraphDuplicationBudgetFactor | Double | 1.0 | See 'DuplicationBudgetFactor': for small graphs.
|
SmallGraphSize | Integer | 2000 | Node cost graph size for a graph to be considered 'small'.
|
SmallRootIrPenaltyCoefficient | Double | 0.02 | Reduces the likelihood of exploring call graphs with IR size much
larger than the root.
|
SnippetCounters | Boolean | false | Enable counters for various paths in snippets.
|
SoftRefLRUPolicyMSPerMB | Long | 1000 | Number of milliseconds per MB of free space in the heap. G1 GC only.
|
SpectrePHTBarriers | String | None | Select a strategy to mitigate speculative bounds check bypass (aka
Spectre-PHT or Spectre V1).
This is an experimental option - execution of untrusted code is not supported by GraalVM CE.
The accepted values are:
None - No mitigations are used in JIT compiled code.
AllTargets - Speculative execution on all branch targets is
stopped using speculative execution barrier instructions.
This option is equivalent to setting SpeculativeExecutionBarriers to true.
GuardTargets - Branch targets relevant to Java memory safety are instrumented
with barrier instructions. This option has less performance impact
than AllTargets.
NonDeoptGuardTargets - Same as GuardTargets, except that branches which deoptimize are not
protected since they can not be executed repeatedly and are thus less
likely to be successfully exploited in an attack.
Note that all modes except "None" will also instrument branch target blocks containing UNSAFE memory accesses
with barrier instructions.
|
SpectrePHTIndexMasking | Boolean | false | Mask indices to scope access to allocation size after bounds check.
|
SpeculativeExecutionBarriers | Boolean | false | Stop speculative execution on all branch targets with execution barrier
instructions.
|
SpeculativeGuardMovement | Boolean | true | Move loop invariant guards (e.g., array bounds checks) out of loops.
|
SpeculativeStoreCheck | Boolean | true | Speculates that arrays have exact type to optimize store checks
|
StackSize | Long | 0 | The size of each thread stack at run-time, in bytes.
|
StartFlightRecording | String | "" | Start flight recording with options.
|
StrengthenGraphWithConstants | Boolean | true | Perform constant folding in StrengthenGraphs
|
StressExplicitExceptionCode | Boolean | false | Stress the code emitting explicit exception throwing code.
|
StressInvokeWithExceptionNode | Boolean | false | Stress the code emitting invokes with explicit exception edges.
|
StressTestEarlyReads | Boolean | false | Stress the code by emitting reads at earliest instead of latest point.
|
StrictDeoptInsertionChecks | Boolean | false | Perform checks that guards and deopts aren't introduced in graphs that
should handle exceptions explicitly
|
StrictProfiles | Boolean | true | Throw an error if an attempt is made to overwrite/update a profile
loaded from disk.
|
StringIndexOfConstantLimit | Integer | 4096 | String.indexOf invocations will be evaluated at compile time if the
receiver is a constant and its length is smaller than this value.
|
StripMineALot | Boolean | false | Force strip mining of all loops that can be strip mined.
|
StripMineCountedLoops | Boolean | true | |
StripMineInvertedLoops | Boolean | true | Strip mine inverted loops.
|
StripMineNonCountedLoops | Boolean | true | |
SupportJsrBytecodes | Boolean | true | |
SupportOSRWithLocks | Boolean | true | Support OSR compilations with locks. If DeoptAfterOSR is true we can
per definition not have unbalanced enter/exits mappings. If
DeoptAfterOSR is false insert artificial monitor enters after the
OSRStart to have balanced enter/exits in the graph.
|
SurvivorRatio | Long | 8 | Ratio of eden/survivor space size. G1 GC only.
|
SystemicCompilationFailureRate | Integer | 1 | Compilation failure rate indicating a systemic compilation problem that
will issue a warning. The value is made absolute and clamped to produce
P, a value between 0 and 100. Systemic failure is detected if the
percent of failing compilations in a sliding time window >= P. A
negative value will cause the VM to exit after issuing the warning. Set
to 0 to disable systemic compilation problem detection.
|
TLABAllocationWeight | Integer | 35 | Allocation averaging weight. G1 GC only.
|
TLABRefillWasteFraction | Long | 64 | Maximum TLAB waste at a refill (internal fragmentation). G1 GC only.
|
TLABSize | Long | 0 | Starting TLAB size (in bytes); zero means set ergonomically. G1 GC
only.
|
TLABWasteIncrement | Long | 4 | Increment allowed waste at slow allocation. G1 GC only.
|
TLABWasteTargetPercent | Integer | 1 | Percentage of Eden that can be wasted. G1 GC only.
|
TargetPLABWastePct | Integer | 10 | Target wasted space in last buffer as percent of overall allocation. G1
GC only.
|
TargetSurvivorRatio | Long | 50 | Desired percentage of survivor space used after scavenge. G1 GC only.
|
TearDownFailureNanos | Long | 0 | The number of nanoseconds before tearing down an isolate gives a
failure message. 0 implies no message.
|
TearDownWarningNanos | Long | 0 | The number of nanoseconds before and between which tearing down an
isolate gives a warning message. 0 implies no warning.
|
TimeStampProfiling | Boolean | false | Profile method execution time.
|
Time | String | null | Pattern for specifying scopes in which timing is enabled. See the Dump
option for the pattern syntax. An empty value enables all timers
unconditionally.
|
TimedDynamicCounters | Integer | -1 | Turn on the benchmark counters, and displays the results every n
milliseconds
|
Timers | String | null | Comma separated names of timers that are enabled irrespective of the
value for Time option. An empty value enables all timers
unconditionally.
|
TraceAuxiliaryImageClassHistogram | Boolean | false | Enables detailed tracing of auxiliary image events.
|
TraceAuxiliaryImageReferenceTree | Boolean | false | Enables detailed tracing of auxiliary image events.
|
TraceBytecodeParserLevel | Integer | 0 | The trace level for the bytecode parser. A value of 1 enables
instruction tracing and any greater value emits a frame state trace
just prior to each instruction trace.Instruction tracing output from
multiple compiler threads will be interleaved so use of this option
make most sense for single threaded compilation. The MethodFilter
option can be used to refine tracing to selected methods.
|
TraceCodeCache | Boolean | false | Print logging information for runtime code cache modifications
|
TraceDeoptimizationDetails | Boolean | false | Print verbose logging information for every deoptimization
|
TraceDeoptimization | Boolean | false | Print logging information for every deoptimization
|
TraceEscapeAnalysis | Boolean | false | |
TraceExceptionHandlerStub | Boolean | false | Trace execution of stub used to handle an exception thrown by a callee.
|
TraceHeapChunks | Boolean | false | Trace heap chunks during collections, if +VerboseGC. Serial GC only.
|
TraceInlineDuringParsing | Boolean | false | Traces inlining performed during bytecode parsing.
|
TraceInliningForStubsAndSnippets | Boolean | false | Enable inlining decision tracing in stubs and snippets.
|
TraceInlining | Boolean | false | Enable tracing of inlining decisions.
Output format:
compilation of 'Signature of the compilation root method':
at 'Signature of the root method' ['Bytecode index']: <'Phase'> 'Child method signature': 'Decision made about this callsite'
at 'Signature of the child method' ['Bytecode index']:
|--<'Phase 1'> 'Grandchild method signature': 'First decision made about this callsite'
\--<'Phase 2'> 'Grandchild method signature': 'Second decision made about this callsite'
at 'Signature of the child method' ['Bytecode index']: <'Phase'> 'Another grandchild method signature': 'The only decision made about this callsite.'
|
TraceLIRGeneratorLevel | Integer | 0 | The trace level for the LIR generator
|
TraceMethodDataFilter | String | null | Enables tracing of profiling info when read by JVMCI.
Empty value: trace all methods
Non-empty value: trace methods whose fully qualified name contains the value.
|
TraceMonitorsMethodFilter | String | null | Trace monitor operations in methods whose fully qualified name contains
this substring.
|
TraceMonitorsTypeFilter | String | null | Trace monitor operations on objects whose type contains this substring.
|
TraceParserPlugins | Boolean | false | Traces use of plugins during bytecode parsing.
|
TraceUnwindStub | Boolean | false | Trace execution of the stub that routes an exception to a handler in
the calling frame.
|
TrackAccessChain | Boolean | false | Track the callers for methods and accessing methods for fields.
|
TrackGraphSizesInDuplication | Boolean | false | Enable (if Count is enabled) graph size tracking during every
duplication iteration.
|
TrackIPEAStatistics | String | none | Track IPEA statistics in substratePriorityInliner.
|
TrackInliningStatistics | String | none | Track inlining statistics (inlining duration, call tree size, compiler
node counts, and the number of callsites). One of: none, interactive
|
TrackInputFlows | Boolean | false | Track the input for type flows.
|
TrackMemUse | String | null | Pattern for specifying scopes in which memory use tracking is enabled.
See the Dump option for the pattern syntax. An empty value enables all
memory use trackers unconditionally.
|
TrackNodeInsertion | Boolean | false | Track source stack trace where a node was inserted into the graph.
|
TrackNodeSourcePosition | Boolean | false | Track the NodeSourcePosition.
|
TrivialInliningSize | Integer | 10 | Graphs with less than this number of nodes are trivial and therefore
always inlined.
|
TrivialLoopSizeLimitForPeeling | Double | 512.0 | Loop peeling will consider any loop with a size (in terms of estimated
machine instructions) below this value to be a prime candidate for
peeling. Larger loops will only be considered for peeling if the
simulated benefit of peeling is relatively high. The larger the loop,
the greater the expected benefit has to be.
|
TruffleCompilerConfiguration | String | null | Select a compiler configuration for Truffle compilation (default: use
Graal system compiler configuration).
|
TruffleHostInliningBaseBudget | Integer | 5000 | Maximum budget for Truffle host inlining for runtime compiled methods.
|
TruffleHostInliningByteCodeInterpreterBudget | Integer | 100000 | Maximum budget for Truffle host inlining for runtime compiled methods
with a BytecodeInterpreterSwitch annotation.
|
TruffleHostInliningMaxExplorationDepth | Integer | 1000 | Determines the maximum call depth for exploration during host inlining.
|
TruffleHostInliningMaxSubtreeInvokes | Integer | 20 | Maximum number of subtree invokes for a subtree to get inlined until it
is considered too complex.
|
TruffleHostInliningMinFrequency | Double | 0.001 | Minimum relative frequency for calls to get inlined. Default 0.001 on
HotSpot and no minimum frequency on SVM.
|
TruffleHostInliningPrintExplored | Boolean | false | When logging is activated for this phase enables printing of only
explored, but ultimately not inlined call trees.
|
TruffleHostInlining | Boolean | true | Whether Truffle host inlining is enabled.
|
TruffleImmutableFrameFields | Boolean | true | Whether Truffle should mark final frame fields as immutable.
|
TruffleTrustedNonNullCast | Boolean | true | Whether Truffle trusted non-null casts are enabled.
|
TruffleTrustedTypeCast | Boolean | true | Whether Truffle trusted type casts are enabled.
|
TrustFinalDefaultFields | Boolean | true | Determines whether to treat final fields with default values as
constant.
|
TryExplodeOverPhis | Boolean | true | PullThroughPhiOptimization: Enable floating node duplication over
multiple phi nodes at once.
|
TryPhiPhiPulls | Boolean | true | PullThroughPhiOptimization: Enable floating node duplication over phis
where the target node has different phis as input.
|
TuneInlinerExploration | Double | 0.0 | Increases or decreases the time spent exploring inlining opportunities
under the assumption that more time results in better peak performance
and less time reduces time to reach (a lower) peak performance. The
value of the option is clamped between -1 and 1 inclusive. Anything
below 0, reduces the exploration time and anything above 0 increases
exploration time. Note that this option is only a heuristic and should
be tuned for any specific application.
|
TypeCheckMaxHints | Integer | 2 | The maximum number of profiled types that will be used when compiling a
profiled type check. Note that TypeCheckMinProfileHitProbability also
influences whether profiling info is used in compiled type checks.
|
TypeCheckMinProfileHitProbability | Double | 0.5 | If the probability that a type check will hit one the profiled types
(up to TypeCheckMaxHints) is below this value, the type check will be
compiled without profiling info
|
TypeFlowPrinterInRadius | Integer | 0 | How many levels of inputs to print. A value of 0 prints only the target
flow.
|
TypeFlowPrinterOutRadius | Integer | 0 | How many levels of outputs to print. A value of 0 prints only the
target flow.
|
TypeFlowSaturationCutoff | Integer | 20 | The maximum number of types recorded in a type flow. -1 indicates no
limitation.
|
TypicalCallGraphSize | Integer | 100 | Denotes the call graph size that is considered medium size.
|
TypicalGraphSizeInvokeBonus | Integer | 70 | The increase in estimated typical graph size after inlining, per each
extra invoke.
|
TypicalGraphSizeMax | Integer | 15000 | The maximum in estimated inlined typical graph size.
|
TypicalGraphSize | Integer | 3250 | The typical graph size at which inlining pressure must start growing.
|
UnresolvedIsError | Boolean | true | Report unresolved elements as errors.
|
UnrollEmptyLoops | Boolean | false | Unroll empty loops.
|
UnrollInvertedLoops | Boolean | true | Unroll inverted (tail counted) loops.
|
UnrollMaxIterations | Integer | 16 | |
UnrollMultiEndLoops | Boolean | true | Unroll loops with multiple loop ends.
|
UnrollMultiExitLoops | Boolean | true | Unroll loops with multiple loop exits.
|
UseBranchesWithin32ByteBoundary | Boolean | false | Force branch instructions to align with 32-bytes boundary, to mitigate
the jcc erratum. See
https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf
for more details. If not set explicitly, the default value will be
determined according to the CPU model.
|
UseCompilationStatistics | Boolean | false | Enables CompilationStatistics.
|
UseDynamicNumberOfGCThreads | Boolean | true | Dynamically choose the number of threads up to a maximum of
ParallelGCThreads that G1 will use for garbage collection work.
|
UseExceptionProbability | Boolean | true | |
UseExperimentalReachabilityAnalysis | Boolean | false | Use experimental Reachability Analysis instead of points-to.
|
UseGraphCache | Boolean | true | Turn on graph caching.
|
UseLoopEndFrequencies | Boolean | false | Derive loop frequencies only from backedge frequencies instead of from
loop exit frequencies.
|
UseLoopLimitChecks | Boolean | true | |
UsePerfData | Boolean | true | Flag to disable jvmstat instrumentation for performance testing.
|
UsePriorityInliningPEA | Boolean | true | Turn on partial escape analysis during inlining.
|
UsePriorityInlining | Boolean | true | Use priority-based inlining.
|
UseProfilingInformation | Boolean | true |
|
UseReachabilityMethodSummaries | Boolean | false | Use method summaries for Reachability Analysis.
|
UseSnippetGraphCache | Boolean | true | Use a cache for snippet graphs.
|
UseSnippetTemplateCache | Boolean | true | Use a LRU cache for snippet templates.
|
UseTrappingNullChecks | Boolean | true | Use traps for null checks instead of explicit null-checks
|
UseTypeCheckHints | Boolean | true | |
UsedEdenProportionThreshold | Double | 0.75 | Ratio of used bytes to total allocated bytes for eden space. Setting it
to a smaller value will trade more triggered hinted GCs for less
resident set size.
|
VTuneAbsoluteFilenames | Boolean | true | Use absolute path for source-filenames in VTune events.
|
VTuneRuntimeSourceDestDir | String | null | Directory where Java source-files will be placed for the debugger
|
VectorFoldMinIterations | Integer | 4 | Only generate SIMD loops for vector folds expected to iterate at least
this many times.
|
VectorIntrinsics | Boolean | true | Enable vectorized array copy intrinsics
|
VectorPolynomialIntrinsics | Boolean | false | Enable vectorized polynomial intrinsics
|
VectorUnroll | Integer | 1 | Unroll vectorized loops
|
Vectorization | Boolean | true | Enable vectorization.
|
VectorizeAllocation | Boolean | true | Enable vectorized array initialization
|
VectorizeConditional | Boolean | true | Enable vectorization of conditional code.
|
VectorizeDeopts | Boolean | true | Enable vectorization of loops with conditional deopts before writes.
|
VectorizeFoldShaped | Boolean | true | Enable vectorization of loops implementing a higher-order 'fold'
function.
|
VectorizeGather | Boolean | true | Enable vectorization of vector gather operations.
|
VectorizeHashes | Boolean | true | Enable vectorization of hashCode patterns.
|
VectorizeIntegerMinMax | Boolean | true | Enable vectorization of integer min/max operations.
|
VectorizeLoops | Boolean | true | Enable vectorization of loops
|
VectorizeMapShaped | Boolean | true | Enable vectorization of loops implementing a higher-order 'map'
function.
|
VectorizeNegativeStride | Boolean | true | Enable vectorization of loops with negative strides.
|
VectorizeReachabilityFences | Boolean | true | Enable vectorization of loops with reachability fences.
|
VectorizeSIMD | Boolean | true | Enable detection of SIMD patterns
|
VectorizeSafepoints | Boolean | true | Enable vectorization of loops with safepoints.
|
VectorizeSequence | Boolean | true | Enable vectorization of sequence values.
|
VerboseGC | Boolean | false | Print more information about the heap before and after each collection.
|
VerifyAfterGC | Boolean | false | Verify memory system after GC. G1 GC only.
|
VerifyBalancedMonitors | Boolean | false | Emit extra code to dynamically check monitor operations are balanced.
|
VerifyBeforeGC | Boolean | false | Verify memory system before GC. G1 GC only.
|
VerifyDuplicationOperations | Boolean | false | |
VerifyDuringGC | Boolean | false | Verify memory system during GC (between phases). G1 GC only.
|
VerifyGCStartAt | Long | 0 | GC invoke count where +VerifyHeap kicks in. G1 GC only.
|
VerifyGraalGraphEdges | Boolean | false | Perform expensive verification of graph inputs, usages, successors and
predecessors
|
VerifyGraalGraphs | Boolean | true | Verify graphs often during compilation when assertions are turned on
|
VerifyGraalPhasesSize | Boolean | false | Verify before - after relation of the relative, computed, code size of
a graph
|
VerifyHeapAtReturn | Boolean | false | Perform platform dependent validation of the Java heap at returns
|
VerifyKillCFGUnusedNodes | Boolean | false | Verify that there are no new unused nodes when performing killCFG
|
VerifyLoopVectorization | Boolean | false | Run expensive checks to verify the graph after loop vectorization.
|
VerifyPhases | Boolean | false | |
VerifyRememberedSets | Boolean | false | Verify GC remembered sets. G1 GC only.
|
VerifyWriteBarrierElimination | Boolean | false | Add code to verify that eliminated barriers weren't needed.
|
Verify | String | null | Pattern for specifying scopes in which logging is enabled. See the Dump
option for the pattern syntax.
|
WarnAboutCodeSignatureMismatch | Boolean | true | Print to stdout when a compilation performed with different profiles
generates different backend code.
|
WarnAboutGraphSignatureMismatch | Boolean | true | Print to stdout when a compilation performed with different profiles
generates different frontend IR.
|
WarnAboutNotCachedLoadedAccess | Boolean | true | Print to stdout when requesting profiling info not present in a loaded
profile.
|
WarnMissingIntrinsic | Boolean | false | Print a warning when a missing intrinsic is seen.
|
WriteSinkingExcludeFields | String | null | Exclude certain fields from write sinking. Fields are specified with
the same syntax as method filters, minus the signature part.
|
WriteableCodeCache | Boolean | false | Allocate code cache with write access, allowing inlining of objects
|
YoungPLABSize | Long | 4096 | Size of young gen promotion LAB's (in HeapWords). G1 GC only.
|
ZapStackOnMethodEntry | Boolean | false | |
ZeroTLAB | Boolean | false | Zero out the newly created TLAB. G1 GC only.
|