VM Options Explorer - Graal EE 1.0

NameTypeDefaultDescription
Type
AOTInliningDepthToSizeRateDouble2.5
AOTInliningSizeMaximumInteger300
AOTInliningSizeMinimumInteger50
ASMInstructionProfilingStringnull
Enables instruction profiling on assembler level. Valid values are a
comma separated list of supported instructions. Compare with subclasses
of Assembler.InstructionCounter.
AbortOnBenchmarkCounterOverflowBooleanfalse
Abort VM with SIGILL if benchmark counters controlled by the
(Generic|Timed|Benchmark)DynamicCounters
option overflow. This feature is only supported on AMD64.
WARNING: No descriptive error message will be printed! In case of an overflow,
manual inspection of the emitted code is required.
AggregatedMetricsFileStringnull
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.
AlwaysInlineIntrinsicsBooleanfalse
Unconditionally inline intrinsics
AlwaysInlineVTableStubsBooleanfalse
BaseCodeSizeCostCoefficientDouble1.0E-4
The base coefficient used to compute code size cost.
BaseTargetSpendingInteger120
The base target spending used to estimate the inlining threshold; the
higher, the likelier it is to inline.
BenchmarkCountersDumpDynamicBooleantrue
Dump dynamic counters
BenchmarkCountersDumpStaticBooleanfalse
Dump static counters
BenchmarkCountersFileStringnull
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
BenchmarkDynamicCountersStringnull
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.
BlockZeroingLowLimitInteger512
Minimum amount of bytes when block zeroing used. (SPARC only)
BootstrapInitializeOnlyBooleanfalse
Do not compile anything on bootstrap but just initialize the compiler.
BootstrapTimeoutDouble15.0
Maximum time in minutes to spend bootstrapping (0 to disable this
limit).
BootstrapWatchDogCriticalRateRatioDouble0.25
Ratio of the maximum compilation rate below which the bootstrap
compilation rate must not fall (0 or less disables monitoring).
CallArrayCopyBooleantrue
CallGraphCompilerNodeLimitInteger100000
Controls the maximum number of compiler nodes that can appear in the
call graph
CallGraphSizeLimitInteger1200
Controls the maximum size of the call graph before ceasing inlining.
CanOmitFrameBooleantrue
CanonicalGraphStringsCheckConstantsBooleanfalse
Exclude virtual nodes when dumping canonical text for graphs.
CanonicalGraphStringsExcludeVirtualsBooleantrue
Exclude virtual nodes when dumping canonical text for graphs.
CanonicalGraphStringsRemoveIdentitiesBooleantrue
Attempts to remove object identity hashes when dumping canonical text
for graphs.
ClearMetricsAfterBootstrapBooleanfalse
Clear the debug metrics after bootstrap.
CompilationBailoutActionStringSilent
Specifies the action to take when compilation fails with a bailout
exception.
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.
CompilationCountLimitInteger0
The number of compilations allowed for any method before the VM exits
(a value of 0 means there is no limit).
CompilationExpirationPeriodInteger300
Time limit in seconds before a compilation expires (0 to disable the
limit). The compilation alarm will be implicitly disabled if assertions
are enabled.
CompilationFailureActionStringDiagnose
Specifies the action to take when compilation fails with a bailout
exception. The accepted values are the same as for
CompilationBailoutAction.
CompilationWatchDogStackTraceIntervalDouble60.0
Interval in seconds between a watch dog reporting stack traces for long
running compilations.
CompilationWatchDogStartDelayDouble0.0
Delay in seconds before watch dog monitoring a compilation (0 disables
monitoring).
CompileGraalWithC1OnlyBooleantrue
In tiered mode compile Graal and JVMCI using optimized first tier code.
CompilerConfigurationStringnull
Names the Graal compiler configuration to use. If ommitted, 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.
CompilerNodePenaltyCoefficientDouble0.01
Controls the likelihood of exploring subtrees that already have a lot
of code during inlining.
CompilerString"graal"
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. This property can also be defined by the contents of /lib/jvmci/compiler-name.
ConditionalEliminationBooleantrue
CountStringnull
Pattern for specifying scopes in which counters are enabled. See the
Dump option for the pattern syntax. An empty value enables all counters
unconditionally.
CountersStringnull
Comma separated names of counters that are enabled irrespective of the
value for Count option. An empty value enables all counters
unconditionally.
CrashAtStringnull
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.
CutoffCodeSizePenaltyCoefficientDouble1.0E-5
Controls the likelihood of further exploring subtrees with a lot of
code during inlining.
DebugLoopInversionBooleanfalse
Debug the loop inversion transformation.
DebugStubsAndSnippetsBooleanfalse
Enable debug output for stub code generation and snippet preparation.
DeoptALotBooleanfalse
DeoptAfterOSRBooleantrue
Deoptimize OSR compiled code when the OSR entry loop is finished if
there is no mature profile available for the rest of the method.
DeoptsToDisableOptimisticOptimizationInteger40
DetailedAssertsBooleanfalse
Enable expensive assertions if normal assertions (i.e. -ea or -esa) are
enabled.
DominatorUsageTreeMaxDepthInteger16
DumpOnErrorBooleanfalse
Send Graal compiler IR to dump handlers on error.
DumpOnPhaseChangeStringnull
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
DumpPathString"dumps"
The directory where various Graal dump files are written.
DumpStringnull
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.
DumpingErrorsAreFatalBooleanfalse
Treat any exceptions during dumping as fatal.
DuplicateALotBooleanfalse
Perform Duplications as long as there is any sane improvement.
DuplicationBudgetFactorLateDouble0.5
Percentage in node cost graph size for the late duplication budget.
Computed relative to the methods code size.
DuplicationBudgetFactorDouble0.25
Percentage in node cost graph size for the duplication budget. Computed
relative to the methods code size.
DynamicCountersPrintGroupSeparatorBooleantrue
Use grouping separators for number printing
EagerSnippetsBooleanfalse
Eagerly construct extra snippet info.
EscapeAnalysisIterationsInteger2
EscapeAnalysisLoopCutoffInteger20
EscapeAnalyzeOnlyStringnull
ExactFullUnrollMaxNodesInteger1200
ExactPartialUnrollMaxNodesInteger200
ExcludeFunctionFromDuplicationStringnull
Exclude compilations that MethodFilter.match this string from the
duplication optimization.
ExitVMOnExceptionBooleanfalse
Alias for CompilationFailureAction=ExitVM.
ExpandAllProximityBonusInertiaDouble2.0
The inertia at which the expand-all proximity bonus decreases with the
number of yet unexpanded nodes.
ExpandAllProximityBonusDouble6.0
The decrease in call graph expansion pressure when there are few call
nodes left to explore.
ExpansionInertiaBaseValueInteger550
The slowness at which the expansion pressure grows with code size; the
higher it is, the slower the pressure growth.
ExpansionInertiaInvokeBonusInteger14
The extra slowness at which the expansion pressure grows with the code
size, for each extra invoke node.
ExpansionInertiaMaxInteger2000
The max slowness at which the expansion pressure grows with the code
size.
FailedLoopExplosionIsFatalBooleanfalse
Do not bail out but throw an exception on failed loop explosion.
FullUnrollAsPEACleanupBooleantrue
Perform full unrolling as a Partial Escape Analysis Cleanup
FullUnrollMaxIterationsInteger600
FullUnrollMaxNodesInteger300
FullUnrollBooleantrue
GCDebugStartCycleInteger-1
GenLoopSafepointsBooleantrue
GenSafepointsBooleantrue
GeneratePICBooleanfalse
Generate position independent code
GenericDynamicCountersBooleanfalse
Turn on the benchmark counters, and displays the results on VM shutdown
GraalArithmeticStubsBooleanfalse
Use Graal arithmetic stubs instead of HotSpot stubs where possible
GraalCompileOnlyStringnull
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.
GraphCompressionThresholdInteger70
Graal graph compression is performed when percent of live nodes falls
below this value
GuardPrioritiesBooleantrue
HideSubstitutionStatesBooleanfalse
When creating info points hide the methods of the substitutions.
HotSpotPrintInliningBooleanfalse
Print inlining optimizations
IgnoreBadDuplicationsBooleantrue
Ignore duplications with a bad benefit cost relation.
IgnoreDeoptSinkBranchesBooleantrue
Ignore paths that sink in a deopt during duplication.
ImmutableCodeBooleanfalse
Try to avoid emitting code where patching is required
InitTimerBooleanfalse
Specifies if initialization timing is enabled.
InlineAllBonusDouble1.0
The bonus applied to call nodes that can be fully inlined.
InlineDuringParsingMaxDepthInteger10
Maximum depth when inlining during bytecode parsing.
InlineDuringParsingBooleantrue
Inlines trivial methods during bytecode parsing.
InlineEverythingBooleanfalse
InlineIntrinsicsDuringParsingBooleantrue
Inlines intrinsic methods during bytecode parsing.
InlineMegamorphicCallsBooleantrue
Inline calls with megamorphic type profile (i.e., not all types could
be recorded).
InlineMonomorphicCallsBooleantrue
Inline calls with monomorphic type profile.
InlinePartialIntrinsicExitDuringParsingBooleantrue
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.
InlinePolymorphicCallsBooleantrue
Inline calls with polymorphic type profile.
InlineVTableStubsBooleantrue
InlineBooleantrue
Enable inlining
InlinedCompilerNodeLimitInteger50000
Controls the maximum number of compiler nodes that can be inlined into
the compiled method.
InliningCoefficientDouble0.02
The coefficient used to compute the inlining threshold; the higher, the
more to inline.
InliningDepthErrorInteger1000
Maximum inlining depth during partial evaluation before reporting an
infinite recursion
InterceptBailoutBooleanfalse
Intercept also bailout exceptions
IntrinsifyBooleantrue
Use compiler intrinsifications.
LIRDynMoveProfileMethodBooleanfalse
Enable dynamic move profiling per method.
LIROptConstantLoadOptimizationBooleantrue
Enable constant load optimization.
LIROptControlFlowOptimizerBooleantrue
LIROptEdgeMoveOptimizerBooleantrue
LIROptLSRAEliminateSpillMovesBooleantrue
Enable spill move elimination.
LIROptLSRAOptimizeSpillPositionBooleantrue
Enable spill position optimization
LIROptLSStackSlotAllocatorBooleantrue
Use linear scan stack slot allocation.
LIROptNullCheckOptimizerBooleantrue
LIROptRedundantMoveEliminationBooleantrue
LIROptStackMoveOptimizerBooleantrue
LIROptTraceRAEliminateSpillMovesBooleantrue
Enable spill position optimization
LIROptimizationBooleantrue
Enable LIR level optimiztations.
LIRProfileMethodsBooleanfalse
Enables profiling of methods.
LIRProfileMovesBooleanfalse
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).
LIRUnlockBackendRestartBooleanfalse
Unlock backend restart feature.
LSRAOptSplitOnlyBooleanfalse
LSRA optimization: Only split but do not reassign
LSRAOptimizationBooleanfalse
Enable LSRA optimization
LimitInlinedInvokesDouble5.0
ListMetricsBooleanfalse
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.
LoadExceptionObjectInVMBooleanfalse
Use a VM runtime call to load and clear the exception object from the
thread at the start of a compiled exception handler.
LogFileStringnull
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().
LogVerboseBooleanfalse
Enable more verbose log output when available
LogStringnull
Pattern for specifying scopes in which logging is enabled. See the Dump
option for the pattern syntax.
LoopInversionBooleanfalse
Convert loops into their zero trip form.
LoopMaxUnswitchInteger3
LoopPeelingBooleantrue
LoopUnswitchFrequencyBoostDouble10.0
LoopUnswitchMaxIncreaseInteger500
LoopUnswitchTrivialInteger10
LoopUnswitchBooleantrue
MatchExpressionsBooleantrue
Allow backend to match complex expressions.
MaxCFGRecomputationsInteger12
MaxCompilationProblemsPerActionInteger2
The maximum number of compilation failures or bailouts to handle with
the action specified by CompilationFailureAction or
CompilationBailoutAction before changing to a less verbose action. This
does not apply to the ExitVM action.
MaxGraphSizeNodeCostInteger100000
Maximum node cost graph size for duplication. If a graph is bigger
duplication will stop.
MaxPriorityInliningPeelingIterationsInteger10
Max number of precise inlining peeling iterations.
MaxSimulationIterationsInteger2
Maximum simulation-duplication iterations of the duplication
optimization per invocation.
MaxSplitsPerNodeInteger32
MaxTemplatesPerSnippetInteger50
MaxVectorAlignmentUnrollInteger4
Maximum number of unrolled alignment instructions
MaxVectorUnrollInteger16
Maximum length of linear-code vector operations
MaximumDesiredSizeInteger20000
Maximum desired size of the compiler graph in nodes.
MaximumEscapeAnalysisArrayLengthInteger32
MaximumInliningSizeInteger300
Inlining is explored up to this number of nodes in the graph for each
call site.
MaximumLoopExplosionCountInteger10000
Max number of loop explosions per method.
MaximumRecursiveInliningInteger5
Maximum level of recursive inlining.
MegamorphicInliningMinMethodProbabilityDouble0.33
Minimum probability for methods to be inlined for megamorphic type
profiles.
MemUseTrackersStringnull
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.
MethodDupCountersBooleanfalse
MethodDupOnlyString""
MethodDupPropagateAnchorsBooleanfalse
MethodFilterRootOnlyBooleanfalse
Only check MethodFilter against the root method in the context if true,
otherwise check all methods
MethodFilterStringnull
Pattern for filtering debug scope output based on method context.
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.
          
Examples of method filters:
--------- 
  visit(Argument;BlockScope)  
  
  Matches all methods named "visit", with the first parameter of
  type "Argument", and the second parameter of type "BlockScope".
  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.
---------    
  org.graalvm.compiler.core.graph.PostOrderNodeIterator.*
 
  Matches all methods in the class "org.graalvm.compiler.core.graph.PostOrderNodeIterator".
---------    
  *
 
  Matches all methods in all classes
---------
  org.graalvm.compiler.core.graph.*.visit
 
  Matches all methods named "visit" in classes in the package
  "org.graalvm.compiler.core.graph".
---------
  arraycopy,toString
 
  Matches all methods named "arraycopy" or "toString", meaning that ',' acts as an or operator.
MethodInlineBailoutLimitInteger5000
Per-compilation method inlining exploration limit before giving up (use
0 to disable)
MetricsFileStringnull
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
MetricsThreadFilterStringnull
Only report metrics for threads whose name matches the regular
expression.
MinimalRegionsBooleantrue
Try to reduce duplication code size to the minimal amount of code.
MinimumPeelProbabilityFloat0.35
MitigateSpeculativeExecutionAttacksStringNone
Select a strategy to mitigate speculative execution attacks (e.g.,
SPECTRE)
NDCVInteger0
Run level for NoDeadCodeVerifyHandler (0 = off, 1 = info, 2 = verbose,
3 = fatal)
NodeCountersBooleanfalse
Counts the number of instances of each node class.
NonFatalIdenticalCompilationSnapshotsInteger20
Number of contiguous identical compiler thread stack traces allowed
before the VM exits on the basis of a stuck compilation.
OmitHotExceptionStacktraceBooleanfalse
OptAssumptionsBooleantrue
OptBulkAllocationBooleantrue
OptClearNonLiveLocalsBooleantrue
OptCompressedFrameStateValuesBooleantrue
OptConditionalMovesBooleantrue
Optimize simple if branches with conditional moves
OptConvertDeoptsToGuardsBooleantrue
OptDeDuplicationBooleantrue
OptDeoptimizationGroupingBooleantrue
OptDevirtualizeInvokesOptimisticallyBooleantrue
OptDuplicationBooleantrue
OptEarlyReadEliminationBooleantrue
OptEliminateGuardsBooleantrue
OptEliminatePartiallyRedundantGuardsBooleantrue
OptExactArithmeticBooleantrue
OptFilterProfiledTypesBooleantrue
OptFloatingReadsBooleantrue
OptGuardRangeGroupingBooleantrue
OptImplicitNullChecksBooleantrue
OptLateDuplicationBooleanfalse
OptLockEliminationBooleantrue
OptLoopTransformBooleantrue
OptMethodDuplicationBooleanfalse
OptPullThroughPhiBooleantrue
OptReadEliminationBooleantrue
OptScheduleOutOfLoopsBooleantrue
OptSpeculativeGuardMovementBooleantrue
OptStringConcatDumpBooleanfalse
Dump graphs to help debug operation
OptStringConcatBooleantrue
Optimize StringBuilder construction
OptWriteBarrierEliminationBooleantrue
Eliminate redundant write barriers.
OptimisticAliasingAnalysisBooleantrue
OptimizeDivBooleantrue
OptimizeLoopAccessesBooleantrue
Enable access node optimizations for loops
PEAInliningHintsBooleanfalse
PartialEscapeAnalysisBooleantrue
PartialRedundancyEliminationBooleantrue
Enable partial redundancy elimination
PartialUnrollBooleantrue
PathDuplicationPhiCutoffInteger20
PeelALotBooleanfalse
PeelBackFoldFactorInteger100
PeelForwardFoldFactorInteger20
PeelPotentialFoldFactorInteger60
PrintBackendCFGBooleantrue
Enable dumping LIR, register allocation and code generation info to the
C1Visualizer.
PrintBinaryGraphPortInteger4445
Port part of the address to which graphs are dumped in binary format.
PrintCFGBooleanfalse
Enable dumping to the C1Visualizer. Enabling this option implies
PrintBackendCFG.
PrintCanonicalGraphStringFlavorInteger0
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)
PrintCanonicalGraphStringsBooleanfalse
Enable dumping canonical text from for graphs.
PrintCompilationBooleanfalse
Print an informational line to the console for each completed
compilation.
PrintConfigBooleanfalse
Prints VM configuration available via JVMCI.
PrintGraphFileBooleanfalse
Print graphs to files instead of sending them over the network.
PrintGraphHostString"127.0.0.1"
Host part of the address to which graphs are dumped.
PrintGraphWithScheduleBooleanfalse
Schedule graphs as they are dumped.
PrintGraphBooleantrue
Enable dumping to the IdealGraphVisualizer.
PrintIRWithLIRBooleanfalse
Print HIR along side LIR as the latter is generated
PrintLIRWithAssemblyBooleanfalse
Include the LIR as comments with the final assembly.
PrintProfilingInformationBooleanfalse
Print profiling information when parsing a method's bytecode
PrintTruffleExpansionHistogramBooleanfalse
Prints a histogram of all expanded Java methods.
PrintTruffleTreesBooleantrue
Enable dumping Truffle ASTs to the IdealGraphVisualizer.
PriorityInliningPolicyString""
The policy to use, must be empty for automatic resolution.
ProbabilisticProfilingBooleantrue
Control probabilistic profiling on AMD64
ProfileAllocationsContextStringAllocatingMethod
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
 
ProfileAllocationsBooleanfalse
Enable profiling of allocation sites.
ProfileBackedgesBooleantrue
Emit profiling of backedges
ProfileCompiledMethodsBooleanfalse
ProfileInvokesBooleantrue
Emit profiling of invokes
ProfileLockEliminationBooleanfalse
ProfileMonitorsBooleanfalse
Enable profiling of monitor operations.
ProfileSimpleMethodsBooleantrue
Profile simple methods
ProfileTypeSwitchesBooleanfalse
Turn on typeswitch profiling. This tracks the stability of typeswitches
after compilation.
PruneLargeDominatorUsageTreesBooleantrue
PullThroughPhiBudgetDouble4096.0
RawConditionalEliminationBooleantrue
ReadEliminationMaxLoopVisitsInteger5
ReassociateInvariantsBooleantrue
ReduceDCEBooleantrue
Disable optional dead code eliminations
RegisterPressureStringnull
Comma separated list of registers that register allocation is limited
to.
RelativeBenefitInliningCoefficientDouble0.005
The coefficient used to compute the inlining threshold; the higher, the
hard to inline.
RemoveNeverExecutedCodeBooleantrue
ReplaceInputsWithConstantsBasedOnStampsBooleantrue
ResolveClassBeforeStaticInvokeBooleanfalse
ScheduledDuplicationSimulationBooleanfalse
Simulation can either only process fixed nodes or schedule the graph
and also process floating nodes.
ShowConfigurationStringnone
Writes to the VM log information about the Graal compiler configuration
selected.
ShowDumpFilesBooleanfalse
Print the name of each dump file path as it's created.
SimpleFastInflatedLockingBooleantrue
Handle simple cases for inflated monitors in the fast-path.
SimpleMethodCallsInteger1
Maximum number of calls in a simple method
SimpleMethodGraphSizeInteger256
Maximum number of nodes in a graph for a simple method
SimpleMethodIndirectCallsInteger0
Maximum number of indirect calls in a simple moethod
SimulationStopAtControlFlowBooleantrue
Determines if simulation traversal should stop at control flow
boundaries that cannot be duplicated.
SmallCompiledLowLevelGraphSizeInteger300
If the previous low-level graph size of the method exceeds the
threshold, it is not inlined.
SnippetCountersBooleanfalse
Enable counters for various paths in snippets.
SpeculativeStoreCheckBooleantrue
Speculates that arrays have exact type to optimize store checks
StressExplicitExceptionCodeBooleanfalse
Stress the code emitting explicit exception throwing code.
StressInvokeWithExceptionNodeBooleanfalse
Stress the code emitting invokes with explicit exception edges.
StressTestEarlyReadsBooleanfalse
Stress the code by emitting reads at earliest instead of latest point.
SupportJsrBytecodesBooleantrue
SupportOSRWithLocksBooleantrue
Support OSR compilations with locks. If DeoptAfterOSR is true we can
per definition not have unbalaced enter/extis mappings. If
DeoptAfterOSR is false insert artificial monitor enters after the
OSRStart to have balanced enter/exits in the graph.
TailDupOnlyString""
TailDuplicationProbabilityDouble0.5
TailDuplicationTrivialSizeInteger1
TierABackedgeNotifyFreqLogInteger16
Backedge notification frequency
TierABackedgeProfileProbabilityLogInteger12
Backedge profile probability
TierAInvokeInlineeNotifyFreqLogInteger-1
Inlinee invocation notification frequency (-1 means count, but do not
notify)
TierAInvokeNotifyFreqLogInteger13
Invocation notification frequency
TierAInvokeProfileProbabilityLogInteger8
Invocation profile probability
TieredAOTBooleanfalse
Do profiling and callbacks to tiered runtime
TimeStringnull
Pattern for specifying scopes in which timing is enabled. See the Dump
option for the pattern syntax. An empty value enables all timers
unconditionally.
TimedDynamicCountersInteger-1
Turn on the benchmark counters, and displays the results every n
milliseconds
TimersStringnull
Comma separated names of timers that are enabled irrespective of the
value for Time option. An empty value enables all timers
unconditionally.
TraceBuildingStringUniDirectional
Trace building algorithm.
TraceBytecodeParserLevelInteger0
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.
TraceEscapeAnalysisBooleanfalse
TraceExceptionHandlerStubBooleanfalse
Trace execution of stub used to handle an exception thrown by a callee.
TraceInlineDuringParsingBooleanfalse
Traces inlining performed during bytecode parsing.
TraceInliningForStubsAndSnippetsBooleanfalse
Enable inlining decision tracing in stubs and snippets.
TraceInliningBooleanfalse
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.'
TraceLIRGeneratorLevelInteger0
The trace level for the LIR generator
TraceMethodDataFilterStringnull
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.
TraceMonitorsMethodFilterStringnull
Trace monitor operations in methods whose fully qualified name contains
this substring.
TraceMonitorsTypeFilterStringnull
Trace monitor operations on objects whose type contains this substring.
TraceParserPluginsBooleanfalse
Traces use of plugins during bytecode parsing.
TraceRACacheStackSlotsBooleantrue
Cache stack slots globally (i.e. a variable always gets the same slot
in every trace).
TraceRAPolicyStringDefault
TraceRA allocation policy to use.
TraceRAScheduleTrivialTracesEarlyBooleantrue
Schedule trivial traces as early as possible.
TraceRABooleanfalse
Enable experimental Trace Register Allocation.
TraceRAalmostTrivialSizeInteger2
Use BottomUp if there is only one block with at most this number of
instructions
TraceRAbottomUpRatioDouble0.0
Use LSRA / BottomUp ratio
TraceRAfrequencyThresholdDouble0.8
Frequency Threshold
TraceRAnumVariablesIntegernull
Use BottomUp for traces with low number of variables at block
boundaries
TraceRAreuseStackSlotsForMoveResolutionCycleBreakingBooleantrue
Reuse spill slots for global move resolution cycle breaking.
TraceRAshareSpillInformationBooleantrue
Share information about spilled values to other traces.
TraceRAsumBudgetDouble0.5
Sum Frequency Budget Threshold
TraceRAtrivialBlockAllocatorBooleantrue
Use special allocator for trivial blocks.
TraceRAuseInterTraceHintsBooleantrue
Use inter-trace register hints.
TraceTruffleAssumptionsBooleanfalse
Print stack trace on assumption invalidation
TraceTruffleCompilationASTBooleanfalse
Print the entire AST after each compilation
TraceTruffleCompilationCallTreeBooleanfalse
Print the inlined call tree for each compiled method
TraceTruffleCompilationDetailsBooleanfalse
Print information for compilation queuing
TraceTruffleCompilationPolymorphismBooleanfalse
Print all polymorphic and generic nodes after each compilation
TraceTruffleCompilationBooleanfalse
Print information for compilation results
TraceTruffleExpansionSourceBooleanfalse
Print source sections for printed expansion trees
TraceTruffleInliningBooleanfalse
Print information for inlining for each compilation.
TraceTrufflePerformanceWarningsBooleanfalse
Print potential performance problems
TraceTruffleSplittingBooleanfalse
Print information for each splitted call site.
TraceTruffleStackTraceLimitInteger20
Number of stack trace elements printed by
TraceTruffleTransferToInterpreter and TraceTruffleAssumptions
TraceTruffleTransferToInterpreterBooleanfalse
Print stack trace on transfer to interpreter
TraceUnwindStubBooleanfalse
Trace execution of the stub that routes an exception to a handler in
the calling frame.
TrackGraphSizesInDuplicationBooleanfalse
Enable (if Count is enabled) graph size tracking during every
duplication iteration.
TrackMemUseStringnull
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.
TrackNodeInsertionBooleanfalse
Track source stack trace where a node was inserted into the graph.
TrackNodeSourcePositionBooleanfalse
Track the NodeSourcePosition.
TrivialInliningSizeInteger10
Graphs with less than this number of nodes are trivial and therefore
always inlined.
TruffleArgumentTypeSpeculationBooleantrue
TruffleBackgroundCompilationBooleantrue
Enable asynchronous truffle compilation in background thread
TruffleCompilationExceptionsAreFatalBooleanfalse
Treat compilation exceptions as fatal exceptions that will exit the
application
TruffleCompilationExceptionsArePrintedBooleantrue
Prints the exception stack trace for compilation exceptions
TruffleCompilationExceptionsAreThrownBooleanfalse
Treat compilation exceptions as thrown runtime exceptions
TruffleCompilationStatisticDetailsBooleanfalse
Print additional more verbose Truffle compilation statistics at the end
of a run.
TruffleCompilationStatisticsBooleanfalse
Print Truffle compilation statistics at the end of a run.
TruffleCompilationThresholdInteger1000
Compile call target when call count exceeds this threshold
TruffleCompilationBooleantrue
Enable or disable truffle compilation.
TruffleCompileImmediatelyBooleanfalse
Compile immediately to test truffle compiler
TruffleCompileOnlyStringnull
Restrict compilation to comma-separated list of includes (or excludes
prefixed with tilde)
TruffleCompilerConfigurationStringnull
Select a Graal compiler configuration for Truffle compilation (default:
use Graal system compiler configuration).
TruffleCompilerThreadsInteger0
Manually set the number of compiler threads
TruffleEnableInfopointsBooleanfalse
Enable support for simple infopoints in truffle partial evaluations.
TruffleExcludeAssertionsBooleantrue
Exclude assertion code from Truffle compilations
TruffleExperimentalSplittingAllowForcedSplitsBooleantrue
Should forced splits be allowed (when using experimental splitting)
TruffleExperimentalSplittingDumpDecisionsBooleanfalse
Dumps to IGV information on polymorphic events
TruffleExperimentalSplittingMaxPropagationDepthInteger5
Propagate info about a polymorphic specialize through maximum this many
call targets
TruffleExperimentalSplittingBooleanfalse
Use the splitting strategy that relies on language implementations
reporting polymorphic specializations. Disables forced splits.
TruffleFirstTierMinInvokeThresholdInteger1
Minimum number of calls before a call target is compiled in the first
tier.
TruffleFunctionInliningBooleantrue
Enable automatic inlining of call targets
TruffleInlineAcrossTruffleBoundaryBooleanfalse
Enable inlining across Truffle boundary
TruffleInliningMaxCallerSizeInteger2250
Stop inlining if caller's cumulative tree size would exceed this limit
TruffleInstrumentBoundariesPerInlineSiteBooleanfalse
Instrument Truffle boundaries by considering different inlining sites
as different branches.
TruffleInstrumentBoundariesBooleanfalse
Instrument Truffle boundaries and output profiling information to the
standard output.
TruffleInstrumentBranchesCountInteger10000
Maximum number of instrumentation counters available.
TruffleInstrumentBranchesFilterStringnull
Method filter for methods in which to add branch instrumentation.
TruffleInstrumentBranchesPerInlineSiteBooleanfalse
Instrument branches by considering different inlining sites as
different branches.
TruffleInstrumentBranchesPrettyBooleantrue
Prettify stack traces for branch-instrumented callsites.
TruffleInstrumentBranchesBooleanfalse
Instrument branches and output profiling information to the standard
output.
TruffleInstrumentFilterString"*.*.*"
Method filter for host methods in which to add instrumentation.
TruffleInstrumentationTableSizeInteger10000
Maximum number of instrumentation counters available.
TruffleIntrinsifyFrameAccessBooleantrue
Intrinsify get/set/is methods of FrameWithoutBoxing to improve Truffle
compilation time
TruffleInvalidationReprofileCountInteger3
Delay compilation after an invalidation to allow for reprofiling
TruffleIterativePartialEscapeBooleanfalse
Run the partial escape analysis iteratively in Truffle compilation.
TruffleMaximumRecursiveInliningInteger4
Maximum level of recursive inlining
TruffleMinInvokeThresholdInteger3
Minimum number of calls before a call target is compiled
TruffleMultiTierBooleanfalse
Whether to use multiple compilation tiers by default.
TruffleOSRCompilationThresholdInteger100000
Number of loop iterations until on-stack-replacement compilation is
triggered.
TruffleOSRBooleantrue
Enable on stack replacement for Truffle loops.
TrufflePerformanceWarningsAreFatalBooleanfalse
Treat performance warnings as fatal occurrences that will exit the
applications
TruffleProfilingEnabledBooleantrue
Enable/disable builtin profiles in com.oracle.truffle.api.profiles.
TruffleReplaceReprofileCountInteger3
Delay compilation after a node replacement
TruffleReturnTypeSpeculationBooleantrue
TruffleSplittingGrowthLimitDouble1.5
Disable call target splitting if the number of nodes created by
splitting exceeds this factor times node count
TruffleSplittingMaxCalleeSizeInteger100
Disable call target splitting if tree size exceeds this limit
TruffleSplittingMaxNumberOfSplitNodesInteger500000
Disable call target splitting if number of nodes created by splitting
exceeds this limit
TruffleSplittingBooleantrue
Enable call target splitting
TruffleTraceSplittingSummaryBooleanfalse
Used for debugging the splitting implementation. Prints splitting
summary directly to stdout on shutdown
TruffleUseFrameWithoutBoxingBooleantrue
TrustFinalDefaultFieldsBooleantrue
Determines whether to treat final fields with default values as
constant.
TryExplodeOverPhisBooleantrue
TryPhiPhiPullsBooleantrue
TypeCheckMaxHintsInteger2
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.
TypeCheckMinProfileHitProbabilityDouble0.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
TypicalGraphSizeInvokeBonusInteger70
The increase in estimated typical graph size after inlining, per each
extra invoke.
TypicalGraphSizeMaxInteger10000
The maximum in estimated inlined typical graph size.
TypicalGraphSizeInteger3250
The typical graph size at which inlining pressure must start growing.
UnrollMaxIterationsInteger16
UseCompilationStatisticsBooleanfalse
Enables CompilationStatistics.
UseExceptionProbabilityBooleantrue
UseGraphCacheBooleantrue
Turn on graph caching.
UseGuardedIntrinsicsBooleantrue
Use intrinsics guarded by a virtual dispatch test at indirect call
sites.
UseIndexMaskingBooleanfalse
Use index masking after bounds check to mitigate speculative execution
attacks
UseLoopLimitChecksBooleantrue
UsePolymorphicInliningBooleantrue
Inline polymorphic calls based on callsite receiver profiles.
UsePriorityInliningBooleantrue
Use priority-based inlining.
UseSnippetGraphCacheBooleantrue
Use a cache for snippet graphs.
UseSnippetTemplateCacheBooleantrue
Use a LRU cache for snippet templates.
UseTrappingNullChecksBooleantrue
Use traps for null checks instead of explicit null-checks
UseTypeCheckHintsBooleantrue
VectorIntrinsicsBooleantrue
Enable vectorized array copy intrinsics
VectorUnrollInteger1
Unroll vectorized loops
VectorizationBooleantrue
Enable vectorization
VectorizeAllocationBooleantrue
Enable vectorized array initialization
VectorizeConditionalBooleanfalse
Enable vectorization of conditional code.
VectorizeFoldShapedBooleantrue
Enable vectorization of loops implementing a higher-order 'fold'
function.
VectorizeLoopsBooleantrue
Enable vectorization of loops
VectorizeMapShapedBooleantrue
Enable vectorization of loops implementing a higher-order 'map'
function.
VectorizeNegativeStrideBooleantrue
Enable vectorization of loops with negative strides.
VectorizeSIMDBooleanfalse
Enable detection of SIMD patterns
VectorizeSequenceBooleantrue
Enable vectorization of sequence values.
VerifyBalancedMonitorsBooleanfalse
Emit extra code to dynamically check monitor operations are balanced.
VerifyDuplicationOperationsBooleanfalse
VerifyGraalGraphEdgesBooleanfalse
Perform expensive verification of graph inputs, usages, successors and
predecessors
VerifyGraalGraphsBooleantrue
Verify graphs often during compilation when assertions are turned on
VerifyGraalPhasesSizeBooleanfalse
Verify before - after relation of the relative, computed, code size of
a graph
VerifyHeapAtReturnBooleanfalse
Perform platform dependent validation of the Java heap at returns
VerifyKillCFGUnusedNodesBooleanfalse
Verify that there are no new unused nodes when performing killCFG
VerifyPhasesBooleanfalse
VerifyWriteBarrierEliminationBooleanfalse
Add code to verify that eliminated barriers weren't needed.
VerifyStringnull
Pattern for specifying scopes in which logging is enabled. See the Dump
option for the pattern syntax.
ZapStackOnMethodEntryBooleanfalse