smotaal
8/4/2018 - 6:10 PM

JavaScript Runtimes

JavaScript Runtimes

OptionDefaultDescription
validateOptionsfalsecrashes if mis-typed JSC options were passed to the VM
dumpOptions0dumps JSC options (0 = None, 1 = Overridden only, 2 = All, 3 = Verbose)
configFile""file to configure JSC options and logging location
useLLInttrueallows the LLINT to be used if true
useJITtrueallows the executable pages to be allocated for JIT and thunks if true
useBaselineJITtrueallows the baseline JIT to be used if true
useDFGJITtrueallows the DFG JIT to be used if true
useRegExpJITtrueallows the RegExp JIT to be used if true
useDOMJITtrueallows the DOMJIT to be used if true
reportMustSucceedExecutableAllocationsfalse
maxPerThreadStackUsage4194304Max allowed stack usage by the VM
softReservedZoneSize131072A buffer greater than reservedZoneSize that reserves space for stringifying exceptions.
reservedZoneSize65536The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients).
crashIfCantAllocateJITMemoryfalse
jitMemoryReservationSize0Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.)
useSeparatedWXHeapfalse
forceCodeBlockLivenessfalse
forceICFailurefalse
repatchCountForCoolDown8
initialCoolDownCount20
repatchBufferingCountdown8
dumpGeneratedBytecodesfalse
dumpBytecodeLivenessResultsfalse
validateBytecodefalse
forceDebuggerBytecodeGenerationfalse
dumpBytecodesBeforeGeneratorificationfalse
useFunctionDotArgumentstrue
useTailCallstrue
optimizeRecursiveTailCallstrue
alwaysUseShadowChickenfalse
shadowChickenLogSize1000
shadowChickenMaxTailDeletedFramesSize128
dumpDisassemblyfalsedumps disassembly of all JIT compiled code upon compilation
asyncDisassemblyfalse
dumpDFGDisassemblyfalsedumps disassembly of DFG function upon compilation
dumpFTLDisassemblyfalsedumps disassembly of FTL function upon compilation
dumpAllDFGNodesfalse
bytecodeRangeToJITCompilebytecode size range to allow compilation on, e.g. 1:100
bytecodeRangeToDFGCompilebytecode size range to allow DFG compilation on, e.g. 1:100
bytecodeRangeToFTLCompilebytecode size range to allow FTL compilation on, e.g. 1:100
jitWhitelist""file with list of function signatures to allow compilation on
dfgWhitelist""file with list of function signatures to allow DFG compilation on
ftlWhitelist""file with list of function signatures to allow FTL compilation on
dumpSourceAtDFGTimefalsedumps source code of JS function being DFG compiled
dumpBytecodeAtDFGTimefalsedumps bytecode of JS function being DFG compiled
dumpGraphAfterParsingfalse
dumpGraphAtEachPhasefalse
dumpDFGGraphAtEachPhasefalsedumps the DFG graph at each phase of DFG compilation (note this excludes DFG graphs during FTL compilation)
dumpDFGFTLGraphAtEachPhasefalsedumps the DFG graph at each phase of DFG compilation when compiling FTL code
dumpB3GraphAtEachPhasefalsedumps the B3 graph at each phase of compilation
dumpAirGraphAtEachPhasefalsedumps the Air graph at each phase of compilation
verboseDFGBytecodeParsingfalse
safepointBeforeEachPhasetrue
verboseCompilationfalse
verboseFTLCompilationfalse
logCompilationChangesfalse
useProbeOSRExitfalse
printEachOSRExitfalse
validateGraphfalse
validateGraphAtEachPhasefalse
verboseValidationFailurefalse
verboseOSRfalse
verboseDFGOSRExitfalse
verboseFTLOSRExitfalse
verboseCallLinkfalse
verboseCompilationQueuefalse
reportCompileTimesfalsedumps JS function signature and the time it took to compile in all tiers
reportBaselineCompileTimesfalsedumps JS function signature and the time it took to BaselineJIT compile
reportDFGCompileTimesfalsedumps JS function signature and the time it took to DFG and FTL compile
reportFTLCompileTimesfalsedumps JS function signature and the time it took to FTL compile
reportTotalCompileTimesfalse
reportParseTimesfalsedumps JS function signature and the time it took to parse
reportBytecodeCompileTimesfalsedumps JS function signature and the time it took to bytecode compile
verboseExitProfilefalse
verboseCFAfalse
verboseDFGFailurefalse
verboseFTLToJSThunkfalse
verboseFTLFailurefalse
alwaysComputeHashfalse
testTheFTLfalse
verboseSanitizeStackfalse
useGenerationalGCtrue
useConcurrentBarrierstrue
useConcurrentGCtrue
collectContinuouslyfalse
collectContinuouslyPeriodMS1
forceFencedBarrierfalse
verboseVisitRacefalse
optimizeParallelSlotVisitorsForStoppedMutatorfalse
largeHeapSize33554432
smallHeapSize1048576
smallHeapRAMFraction0.25
smallHeapGrowthFactor2
mediumHeapRAMFraction0.5
mediumHeapGrowthFactor1.5
largeHeapGrowthFactor1.24
miniVMHeapGrowthFactor1.27
criticalGCMemoryThreshold0.8percent memory in use the GC considers critical. The collector is much more aggressive above this threshold
minimumMutatorUtilization0
maximumMutatorUtilization0.7
epsilonMutatorUtilization0.01
concurrentGCMaxHeadroom1.5
concurrentGCPeriodMS2
useStochasticMutatorSchedulertrue
minimumGCPauseMS0.3
gcPauseScale0.3
gcIncrementBytes10000
gcIncrementMaxBytes100000
gcIncrementScale0
scribbleFreeCellsfalse
sizeClassProgression1.4
largeAllocationCutoff100000
dumpSizeClassesfalse
useBumpAllocatortrue
stealEmptyBlocksFromOtherAllocatorstrue
tradeDestructorBlockstrue
eagerlyUpdateTopCallFramefalse
useOSREntryToDFGtrue
useOSREntryToFTLtrue
useFTLJITtrueallows the FTL JIT to be used if true
useFTLTBAAtrue
validateFTLOSRExitLivenessfalse
defaultB3OptLevel2
b3AlwaysFailsBeforeCompilefalse
b3AlwaysFailsBeforeLinkfalse
ftlCrashesfalse
clobberAllRegsInFTLICSlowPathfalse
enableJITDebugAssertionsfalse
useAccessInliningtrue
maxAccessVariantListSize8
usePolyvariantDevirtualizationtrue
usePolymorphicAccessInliningtrue
usePolymorphicCallInliningtrue
usePolymorphicCallInliningForNonStubStatusfalse
maxPolymorphicCallVariantListSize15
maxPolymorphicCallVariantListSizeForTopTier5
maxPolymorphicCallVariantListSizeForWebAssemblyToJS5
maxPolymorphicCallVariantsForInlining5
frequentCallThreshold2
minimumCallToKnownRate0.51
createPreHeaderstrue
useMovHintRemovaltrue
usePutStackSinkingtrue
useObjectAllocationSinkingtrue
useArityFixupInliningtrue
logExecutableAllocationfalse
useConcurrentJITtrueallows the DFG / FTL compilation in threads other than the executing JS thread
numberOfDFGCompilerThreads2
numberOfFTLCompilerThreads7
priorityDeltaOfDFGCompilerThreads0
priorityDeltaOfFTLCompilerThreads0
priorityDeltaOfWasmCompilerThreads0
useProfilerfalse
disassembleBaselineForProfilertrue
useArchitectureSpecificOptimizationstrue
breakOnThrowfalse
maximumOptimizationCandidateInstructionCount100000
maximumFunctionForCallInlineCandidateInstructionCount190
maximumFunctionForClosureCallInlineCandidateInstructionCount100
maximumFunctionForConstructInlineCandidateInstructionCount100
maximumFTLCandidateInstructionCount20000
maximumInliningDepth5maximum allowed inlining depth. Depth of 1 means no inlining
maximumInliningRecursion2
maximumInliningCallerSize10000
maximumVarargsForInlining100
usePolyvariantCallInliningtrue
usePolyvariantByIdInliningtrue
useMaximalFlushInsertionPhasefalseSetting to true allows the DFG's MaximalFlushInsertionPhase to run.
maximumBinaryStringSwitchCaseLength50
maximumBinaryStringSwitchTotalLength2000
jitPolicyScale1scale JIT thresholds to this specified ratio between 0.0 (compile ASAP) and 1.0 (compile like normal).
forceEagerCompilationfalse
thresholdForJITAfterWarmUp500
thresholdForJITSoon100
thresholdForOptimizeAfterWarmUp1000
thresholdForOptimizeAfterLongWarmUp1000
thresholdForOptimizeSoon1000
executionCounterIncrementForLoop1
executionCounterIncrementForEntry15
thresholdForFTLOptimizeAfterWarmUp100000
thresholdForFTLOptimizeSoon1000
ftlTierUpCounterIncrementForLoop1
ftlTierUpCounterIncrementForReturn15
ftlOSREntryFailureCountForReoptimization15
ftlOSREntryRetryThreshold100
evalThresholdMultiplier10
maximumEvalCacheableSourceLength256
randomizeExecutionCountsBetweenCheckpointsfalse
maximumExecutionCountsBetweenCheckpointsForBaseline1000
maximumExecutionCountsBetweenCheckpointsForUpperTiers50000
likelyToTakeSlowCaseMinimumCount20
couldTakeSlowCaseMinimumCount10
osrExitCountForReoptimization100
osrExitCountForReoptimizationFromLoop5
reoptimizationRetryCounterMax21(default: 0)
minimumOptimizationDelay1
maximumOptimizationDelay5
desiredProfileLivenessRate0.75
desiredProfileFullnessRate0.35
doubleVoteRatioForDoubleFormat2
structureCheckVoteRatioForHoisting1
checkArrayVoteRatioForHoisting1
maximumDirectCallStackSize200
minimumNumberOfScansBetweenRebalance100
numberOfGCMarkers8
useParallelMarkingConstraintSolvertrue
opaqueRootMergeThreshold1000
minHeapUtilization0.8
minMarkedBlockUtilization0.9
slowPathAllocsBetweenGCs0force a GC on every Nth slow path alloc, where N is specified by this option
percentCPUPerMBForFullTimer0.0003125
percentCPUPerMBForEdenTimer0.0025
collectionTimerMaxPercentCPU0.05
forceWeakRandomSeedfalse
forcedWeakRandomSeed0
useZombieModefalsedebugging option to scribble over dead objects with 0xbadbeef0
useImmortalObjectsfalsedebugging option to keep all objects alive forever
sweepSynchronouslyfalsedebugging option to sweep all dead objects synchronously at GC end before resuming mutator
logGCNonedebugging option to log GC activity (0 = None, 1 = Basic, 2 = Verbose)
useGCtrue
gcAtEndfalseIf true, the jsc CLI will do a GC before exiting
forceGCSlowPathsfalseIf true, we will force all JIT fast allocations down their slow paths.
gcMaxHeapSize0
forceRAMSize0
recordGCPauseTimesfalse
logHeapStatisticsAtExitfalse
forceCodeBlockToJettisonDueToOldAgefalseIf true, this means that anytime we can jettison a CodeBlock due to old age, we do.
useEagerCodeBlockJettisonTimingfalseIf true, the time slices for jettisoning a CodeBlock due to old age are shrunk significantly.
useTypeProfilerfalse
useControlFlowProfilerfalse
useSamplingProfilerfalse
sampleInterval1000Time between stack traces in microseconds.
collectSamplingProfilerDataForJSCShellfalseThis corresponds to the JSC shell's --sample option.
samplingProfilerTopFunctionsCount12Number of top functions to report when using the command line interface.
samplingProfilerTopBytecodesCount40Number of top bytecodes to report when using the command line interface.
samplingProfilerPath""The path to the directory to write sampiling profiler output to. This probably will not work with WK2 unless the path is in the whitelist.
sampleCCodefalseCauses the sampling profiler to record profiling data for C frames.
alwaysGeneratePCToCodeOriginMapfalseThis will make sure we always generate a PCToCodeOriginMap for JITed code.
verifyHeapfalse
numberOfGCCyclesToRecordForVerification3
exceptionStackTraceLimit100Stack trace limit for internal Exception object
defaultErrorStackTraceLimit100The default value for Error.stackTraceLimit
useExceptionFuzzfalse
fireExceptionFuzzAt0
validateDFGExceptionHandlingfalseCauses the DFG to emit code validating exception handling for each node that can exit
dumpSimulatedThrowsfalseDumps the call stack of the last simulated throw if exception scope verification fails
validateExceptionChecksfalseVerifies that needed exception checks are performed.
unexpectedExceptionStackTraceLimit100Stack trace limit for debugging unexpected exceptions observed in the VM
useExecutableAllocationFuzzfalse
fireExecutableAllocationFuzzAt0
fireExecutableAllocationFuzzAtOrAfter0
verboseExecutableAllocationFuzzfalse
useOSRExitFuzzfalse
fireOSRExitFuzzAtStatic0
fireOSRExitFuzzAt0
fireOSRExitFuzzAtOrAfter0
logPhaseTimesfalse
rareBlockPenalty0.001
airLinearScanVerbosefalse
airLinearScanSpillsEverythingfalse
airForceBriggsAllocatorfalse
airForceIRCAllocatorfalse
airRandomizeRegsfalse
coalesceSpillSlotstrue
logAirRegisterPressurefalse
useB3TailDuptrue
maxB3TailDupBlockSize3
maxB3TailDupBlockSuccessors3
useDollarVMfalseinstalls the $vm debugging tool in global objects
functionOverrides""file with debugging overrides for function bodies
useSigillCrashAnalyzerfalselogs data about SIGILL crashes
watchdog0watchdog timeout (0 = Disabled, N = a timeout period of N milliseconds)
usePollingTrapsfalseuse polling (instead of signalling) VM traps
useMachForExceptionstrueUse mach exceptions rather than signals to handle faults and pass thread messages. (This does nothing on platforms without mach)
useICStatsfalse
prototypeHitCountForLLIntCaching2Number of prototype property hits before caching a prototype in the LLInt. A count of 0 means never cache.
dumpCompiledRegExpPatternsfalse
dumpModuleRecordfalse
dumpModuleLoadingStatefalse
exposeInternalModuleLoaderfalseexpose the internal module loader object to the global space for debugging
useSuperSamplerfalse
useSourceProviderCachetrueIf false, the parser will not use the source provider cache. It's good to verify everything works when this is false. Because the cache is so successful, it can mask bugs.
useCodeCachetrueIf false, the unlinked byte code cache will not be used.
useWebAssemblytrueExpose the WebAssembly global object.
enableSpectreMitigationstrueEnable Spectre mitigations.
enableSpectreGadgetsfalseenable gadgets to test Spectre mitigations.
usePoisoningtruePoison is randomized at load time when true, and initialized to 0 if false which defeats some Spectre and type confusion mitigations, but allows tools such as leak detectors to function better.
zeroStackFramefalseZero stack frame on entry to a function.
useAsyncIteratortrueAllow to use Async Iterator in JS.
failToCompileWebAssemblyCodefalseIf true, no Wasm::Plan will sucessfully compile a function.
webAssemblyPartialCompileLimit5000Limit on the number of bytes a Wasm::Plan::compile should attempt before checking for other work.
webAssemblyBBQOptimizationLevel1B3 Optimization level for BBQ Web Assembly module compilations.
webAssemblyOMGOptimizationLevel2B3 Optimization level for OMG Web Assembly module compilations.
useBBQTierUpCheckstrueEnables tier up checks for our BBQ code.
webAssemblyOMGTierUpCount5000The countdown before we tier up a function to OMG.
webAssemblyLoopDecrement15The amount the tier up countdown is decremented on each loop backedge.
webAssemblyFunctionEntryDecrement1The amount the tier up countdown is decremented on each function entry.
useWebAssemblyFastMemorytrueIf true, we will try to use a 32-bit address space with a signal handler to bounds check wasm memory.
logWebAssemblyMemoryfalse
webAssemblyFastMemoryRedzonePages128WebAssembly fast memories use 4GiB virtual allocations, plus a redzone (counted as multiple of 64KiB WebAssembly pages) at the end to catch reg+imm accesses which exceed 32-bit, anything beyond the redzone is explicitly bounds-checked
crashIfWebAssemblyCantFastMemoryfalseIf true, we will crash if we can't obtain fast memory for wasm.
maxNumWebAssemblyFastMemories4
useFastTLSForWasmContexttrueIf true, we will store context in fast TLS. If false, we will pin it to a register.
useWebAssemblyStreamingApifalseAllow to run WebAssembly's Streaming API
useCallICsForWebAssemblyToJSCallstrueIf true, we will use CallLinkInfo to inline cache Wasm to JS calls.
useEagerWebAssemblyModuleHashingfalseUnnamed WebAssembly modules are identified in backtraces through their hash, if available.
useObjectRestSpreadtrueIf true, we will enable Object Rest/Spread feature.
useBigIntfalseIf true, we will enable BigInt support.
useIntlNumberFormatToPartsfalseIf true, we will enable Intl.NumberFormat.prototype.formatToParts
useIntlPluralRulesfalseIf true, we will enable Intl.PluralRules.
useArrayAllocationProfilingtrueIf true, we will use our normal array allocation profiling. If false, the allocation profile will always claim to be undecided.
forcePolyProtofalseIf true, create_this will always create an object with a poly proto structure.
forceMiniVMModefalseIf true, it will force mini VM mode on.
useTracePointsfalse