JavaScript Runtimes
Option | Default | Description |
---|---|---|
validateOptions | false | crashes if mis-typed JSC options were passed to the VM |
dumpOptions | 0 | dumps JSC options (0 = None, 1 = Overridden only, 2 = All, 3 = Verbose) |
configFile | "" | file to configure JSC options and logging location |
useLLInt | true | allows the LLINT to be used if true |
useJIT | true | allows the executable pages to be allocated for JIT and thunks if true |
useBaselineJIT | true | allows the baseline JIT to be used if true |
useDFGJIT | true | allows the DFG JIT to be used if true |
useRegExpJIT | true | allows the RegExp JIT to be used if true |
useDOMJIT | true | allows the DOMJIT to be used if true |
reportMustSucceedExecutableAllocations | false | |
maxPerThreadStackUsage | 4194304 | Max allowed stack usage by the VM |
softReservedZoneSize | 131072 | A buffer greater than reservedZoneSize that reserves space for stringifying exceptions. |
reservedZoneSize | 65536 | The amount of stack space we guarantee to our clients (and to interal VM code that does not call out to clients). |
crashIfCantAllocateJITMemory | false | |
jitMemoryReservationSize | 0 | Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.) |
useSeparatedWXHeap | false | |
forceCodeBlockLiveness | false | |
forceICFailure | false | |
repatchCountForCoolDown | 8 | |
initialCoolDownCount | 20 | |
repatchBufferingCountdown | 8 | |
dumpGeneratedBytecodes | false | |
dumpBytecodeLivenessResults | false | |
validateBytecode | false | |
forceDebuggerBytecodeGeneration | false | |
dumpBytecodesBeforeGeneratorification | false | |
useFunctionDotArguments | true | |
useTailCalls | true | |
optimizeRecursiveTailCalls | true | |
alwaysUseShadowChicken | false | |
shadowChickenLogSize | 1000 | |
shadowChickenMaxTailDeletedFramesSize | 128 | |
dumpDisassembly | false | dumps disassembly of all JIT compiled code upon compilation |
asyncDisassembly | false | |
dumpDFGDisassembly | false | dumps disassembly of DFG function upon compilation |
dumpFTLDisassembly | false | dumps disassembly of FTL function upon compilation |
dumpAllDFGNodes | false | |
bytecodeRangeToJITCompile | bytecode size range to allow compilation on, e.g. 1:100 | |
bytecodeRangeToDFGCompile | bytecode size range to allow DFG compilation on, e.g. 1:100 | |
bytecodeRangeToFTLCompile | bytecode 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 |
dumpSourceAtDFGTime | false | dumps source code of JS function being DFG compiled |
dumpBytecodeAtDFGTime | false | dumps bytecode of JS function being DFG compiled |
dumpGraphAfterParsing | false | |
dumpGraphAtEachPhase | false | |
dumpDFGGraphAtEachPhase | false | dumps the DFG graph at each phase of DFG compilation (note this excludes DFG graphs during FTL compilation) |
dumpDFGFTLGraphAtEachPhase | false | dumps the DFG graph at each phase of DFG compilation when compiling FTL code |
dumpB3GraphAtEachPhase | false | dumps the B3 graph at each phase of compilation |
dumpAirGraphAtEachPhase | false | dumps the Air graph at each phase of compilation |
verboseDFGBytecodeParsing | false | |
safepointBeforeEachPhase | true | |
verboseCompilation | false | |
verboseFTLCompilation | false | |
logCompilationChanges | false | |
useProbeOSRExit | false | |
printEachOSRExit | false | |
validateGraph | false | |
validateGraphAtEachPhase | false | |
verboseValidationFailure | false | |
verboseOSR | false | |
verboseDFGOSRExit | false | |
verboseFTLOSRExit | false | |
verboseCallLink | false | |
verboseCompilationQueue | false | |
reportCompileTimes | false | dumps JS function signature and the time it took to compile in all tiers |
reportBaselineCompileTimes | false | dumps JS function signature and the time it took to BaselineJIT compile |
reportDFGCompileTimes | false | dumps JS function signature and the time it took to DFG and FTL compile |
reportFTLCompileTimes | false | dumps JS function signature and the time it took to FTL compile |
reportTotalCompileTimes | false | |
reportParseTimes | false | dumps JS function signature and the time it took to parse |
reportBytecodeCompileTimes | false | dumps JS function signature and the time it took to bytecode compile |
verboseExitProfile | false | |
verboseCFA | false | |
verboseDFGFailure | false | |
verboseFTLToJSThunk | false | |
verboseFTLFailure | false | |
alwaysComputeHash | false | |
testTheFTL | false | |
verboseSanitizeStack | false | |
useGenerationalGC | true | |
useConcurrentBarriers | true | |
useConcurrentGC | true | |
collectContinuously | false | |
collectContinuouslyPeriodMS | 1 | |
forceFencedBarrier | false | |
verboseVisitRace | false | |
optimizeParallelSlotVisitorsForStoppedMutator | false | |
largeHeapSize | 33554432 | |
smallHeapSize | 1048576 | |
smallHeapRAMFraction | 0.25 | |
smallHeapGrowthFactor | 2 | |
mediumHeapRAMFraction | 0.5 | |
mediumHeapGrowthFactor | 1.5 | |
largeHeapGrowthFactor | 1.24 | |
miniVMHeapGrowthFactor | 1.27 | |
criticalGCMemoryThreshold | 0.8 | percent memory in use the GC considers critical. The collector is much more aggressive above this threshold |
minimumMutatorUtilization | 0 | |
maximumMutatorUtilization | 0.7 | |
epsilonMutatorUtilization | 0.01 | |
concurrentGCMaxHeadroom | 1.5 | |
concurrentGCPeriodMS | 2 | |
useStochasticMutatorScheduler | true | |
minimumGCPauseMS | 0.3 | |
gcPauseScale | 0.3 | |
gcIncrementBytes | 10000 | |
gcIncrementMaxBytes | 100000 | |
gcIncrementScale | 0 | |
scribbleFreeCells | false | |
sizeClassProgression | 1.4 | |
largeAllocationCutoff | 100000 | |
dumpSizeClasses | false | |
useBumpAllocator | true | |
stealEmptyBlocksFromOtherAllocators | true | |
tradeDestructorBlocks | true | |
eagerlyUpdateTopCallFrame | false | |
useOSREntryToDFG | true | |
useOSREntryToFTL | true | |
useFTLJIT | true | allows the FTL JIT to be used if true |
useFTLTBAA | true | |
validateFTLOSRExitLiveness | false | |
defaultB3OptLevel | 2 | |
b3AlwaysFailsBeforeCompile | false | |
b3AlwaysFailsBeforeLink | false | |
ftlCrashes | false | |
clobberAllRegsInFTLICSlowPath | false | |
enableJITDebugAssertions | false | |
useAccessInlining | true | |
maxAccessVariantListSize | 8 | |
usePolyvariantDevirtualization | true | |
usePolymorphicAccessInlining | true | |
usePolymorphicCallInlining | true | |
usePolymorphicCallInliningForNonStubStatus | false | |
maxPolymorphicCallVariantListSize | 15 | |
maxPolymorphicCallVariantListSizeForTopTier | 5 | |
maxPolymorphicCallVariantListSizeForWebAssemblyToJS | 5 | |
maxPolymorphicCallVariantsForInlining | 5 | |
frequentCallThreshold | 2 | |
minimumCallToKnownRate | 0.51 | |
createPreHeaders | true | |
useMovHintRemoval | true | |
usePutStackSinking | true | |
useObjectAllocationSinking | true | |
useArityFixupInlining | true | |
logExecutableAllocation | false | |
useConcurrentJIT | true | allows the DFG / FTL compilation in threads other than the executing JS thread |
numberOfDFGCompilerThreads | 2 | |
numberOfFTLCompilerThreads | 7 | |
priorityDeltaOfDFGCompilerThreads | 0 | |
priorityDeltaOfFTLCompilerThreads | 0 | |
priorityDeltaOfWasmCompilerThreads | 0 | |
useProfiler | false | |
disassembleBaselineForProfiler | true | |
useArchitectureSpecificOptimizations | true | |
breakOnThrow | false | |
maximumOptimizationCandidateInstructionCount | 100000 | |
maximumFunctionForCallInlineCandidateInstructionCount | 190 | |
maximumFunctionForClosureCallInlineCandidateInstructionCount | 100 | |
maximumFunctionForConstructInlineCandidateInstructionCount | 100 | |
maximumFTLCandidateInstructionCount | 20000 | |
maximumInliningDepth | 5 | maximum allowed inlining depth. Depth of 1 means no inlining |
maximumInliningRecursion | 2 | |
maximumInliningCallerSize | 10000 | |
maximumVarargsForInlining | 100 | |
usePolyvariantCallInlining | true | |
usePolyvariantByIdInlining | true | |
useMaximalFlushInsertionPhase | false | Setting to true allows the DFG's MaximalFlushInsertionPhase to run. |
maximumBinaryStringSwitchCaseLength | 50 | |
maximumBinaryStringSwitchTotalLength | 2000 | |
jitPolicyScale | 1 | scale JIT thresholds to this specified ratio between 0.0 (compile ASAP) and 1.0 (compile like normal). |
forceEagerCompilation | false | |
thresholdForJITAfterWarmUp | 500 | |
thresholdForJITSoon | 100 | |
thresholdForOptimizeAfterWarmUp | 1000 | |
thresholdForOptimizeAfterLongWarmUp | 1000 | |
thresholdForOptimizeSoon | 1000 | |
executionCounterIncrementForLoop | 1 | |
executionCounterIncrementForEntry | 15 | |
thresholdForFTLOptimizeAfterWarmUp | 100000 | |
thresholdForFTLOptimizeSoon | 1000 | |
ftlTierUpCounterIncrementForLoop | 1 | |
ftlTierUpCounterIncrementForReturn | 15 | |
ftlOSREntryFailureCountForReoptimization | 15 | |
ftlOSREntryRetryThreshold | 100 | |
evalThresholdMultiplier | 10 | |
maximumEvalCacheableSourceLength | 256 | |
randomizeExecutionCountsBetweenCheckpoints | false | |
maximumExecutionCountsBetweenCheckpointsForBaseline | 1000 | |
maximumExecutionCountsBetweenCheckpointsForUpperTiers | 50000 | |
likelyToTakeSlowCaseMinimumCount | 20 | |
couldTakeSlowCaseMinimumCount | 10 | |
osrExitCountForReoptimization | 100 | |
osrExitCountForReoptimizationFromLoop | 5 | |
reoptimizationRetryCounterMax | 21 | (default: 0) |
minimumOptimizationDelay | 1 | |
maximumOptimizationDelay | 5 | |
desiredProfileLivenessRate | 0.75 | |
desiredProfileFullnessRate | 0.35 | |
doubleVoteRatioForDoubleFormat | 2 | |
structureCheckVoteRatioForHoisting | 1 | |
checkArrayVoteRatioForHoisting | 1 | |
maximumDirectCallStackSize | 200 | |
minimumNumberOfScansBetweenRebalance | 100 | |
numberOfGCMarkers | 8 | |
useParallelMarkingConstraintSolver | true | |
opaqueRootMergeThreshold | 1000 | |
minHeapUtilization | 0.8 | |
minMarkedBlockUtilization | 0.9 | |
slowPathAllocsBetweenGCs | 0 | force a GC on every Nth slow path alloc, where N is specified by this option |
percentCPUPerMBForFullTimer | 0.0003125 | |
percentCPUPerMBForEdenTimer | 0.0025 | |
collectionTimerMaxPercentCPU | 0.05 | |
forceWeakRandomSeed | false | |
forcedWeakRandomSeed | 0 | |
useZombieMode | false | debugging option to scribble over dead objects with 0xbadbeef0 |
useImmortalObjects | false | debugging option to keep all objects alive forever |
sweepSynchronously | false | debugging option to sweep all dead objects synchronously at GC end before resuming mutator |
logGC | None | debugging option to log GC activity (0 = None, 1 = Basic, 2 = Verbose) |
useGC | true | |
gcAtEnd | false | If true, the jsc CLI will do a GC before exiting |
forceGCSlowPaths | false | If true, we will force all JIT fast allocations down their slow paths. |
gcMaxHeapSize | 0 | |
forceRAMSize | 0 | |
recordGCPauseTimes | false | |
logHeapStatisticsAtExit | false | |
forceCodeBlockToJettisonDueToOldAge | false | If true, this means that anytime we can jettison a CodeBlock due to old age, we do. |
useEagerCodeBlockJettisonTiming | false | If true, the time slices for jettisoning a CodeBlock due to old age are shrunk significantly. |
useTypeProfiler | false | |
useControlFlowProfiler | false | |
useSamplingProfiler | false | |
sampleInterval | 1000 | Time between stack traces in microseconds. |
collectSamplingProfilerDataForJSCShell | false | This corresponds to the JSC shell's --sample option. |
samplingProfilerTopFunctionsCount | 12 | Number of top functions to report when using the command line interface. |
samplingProfilerTopBytecodesCount | 40 | Number 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. |
sampleCCode | false | Causes the sampling profiler to record profiling data for C frames. |
alwaysGeneratePCToCodeOriginMap | false | This will make sure we always generate a PCToCodeOriginMap for JITed code. |
verifyHeap | false | |
numberOfGCCyclesToRecordForVerification | 3 | |
exceptionStackTraceLimit | 100 | Stack trace limit for internal Exception object |
defaultErrorStackTraceLimit | 100 | The default value for Error.stackTraceLimit |
useExceptionFuzz | false | |
fireExceptionFuzzAt | 0 | |
validateDFGExceptionHandling | false | Causes the DFG to emit code validating exception handling for each node that can exit |
dumpSimulatedThrows | false | Dumps the call stack of the last simulated throw if exception scope verification fails |
validateExceptionChecks | false | Verifies that needed exception checks are performed. |
unexpectedExceptionStackTraceLimit | 100 | Stack trace limit for debugging unexpected exceptions observed in the VM |
useExecutableAllocationFuzz | false | |
fireExecutableAllocationFuzzAt | 0 | |
fireExecutableAllocationFuzzAtOrAfter | 0 | |
verboseExecutableAllocationFuzz | false | |
useOSRExitFuzz | false | |
fireOSRExitFuzzAtStatic | 0 | |
fireOSRExitFuzzAt | 0 | |
fireOSRExitFuzzAtOrAfter | 0 | |
logPhaseTimes | false | |
rareBlockPenalty | 0.001 | |
airLinearScanVerbose | false | |
airLinearScanSpillsEverything | false | |
airForceBriggsAllocator | false | |
airForceIRCAllocator | false | |
airRandomizeRegs | false | |
coalesceSpillSlots | true | |
logAirRegisterPressure | false | |
useB3TailDup | true | |
maxB3TailDupBlockSize | 3 | |
maxB3TailDupBlockSuccessors | 3 | |
useDollarVM | false | installs the $vm debugging tool in global objects |
functionOverrides | "" | file with debugging overrides for function bodies |
useSigillCrashAnalyzer | false | logs data about SIGILL crashes |
watchdog | 0 | watchdog timeout (0 = Disabled, N = a timeout period of N milliseconds) |
usePollingTraps | false | use polling (instead of signalling) VM traps |
useMachForExceptions | true | Use mach exceptions rather than signals to handle faults and pass thread messages. (This does nothing on platforms without mach) |
useICStats | false | |
prototypeHitCountForLLIntCaching | 2 | Number of prototype property hits before caching a prototype in the LLInt. A count of 0 means never cache. |
dumpCompiledRegExpPatterns | false | |
dumpModuleRecord | false | |
dumpModuleLoadingState | false | |
exposeInternalModuleLoader | false | expose the internal module loader object to the global space for debugging |
useSuperSampler | false | |
useSourceProviderCache | true | If 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. |
useCodeCache | true | If false, the unlinked byte code cache will not be used. |
useWebAssembly | true | Expose the WebAssembly global object. |
enableSpectreMitigations | true | Enable Spectre mitigations. |
enableSpectreGadgets | false | enable gadgets to test Spectre mitigations. |
usePoisoning | true | Poison 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. |
zeroStackFrame | false | Zero stack frame on entry to a function. |
useAsyncIterator | true | Allow to use Async Iterator in JS. |
failToCompileWebAssemblyCode | false | If true, no Wasm::Plan will sucessfully compile a function. |
webAssemblyPartialCompileLimit | 5000 | Limit on the number of bytes a Wasm::Plan::compile should attempt before checking for other work. |
webAssemblyBBQOptimizationLevel | 1 | B3 Optimization level for BBQ Web Assembly module compilations. |
webAssemblyOMGOptimizationLevel | 2 | B3 Optimization level for OMG Web Assembly module compilations. |
useBBQTierUpChecks | true | Enables tier up checks for our BBQ code. |
webAssemblyOMGTierUpCount | 5000 | The countdown before we tier up a function to OMG. |
webAssemblyLoopDecrement | 15 | The amount the tier up countdown is decremented on each loop backedge. |
webAssemblyFunctionEntryDecrement | 1 | The amount the tier up countdown is decremented on each function entry. |
useWebAssemblyFastMemory | true | If true, we will try to use a 32-bit address space with a signal handler to bounds check wasm memory. |
logWebAssemblyMemory | false | |
webAssemblyFastMemoryRedzonePages | 128 | WebAssembly 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 |
crashIfWebAssemblyCantFastMemory | false | If true, we will crash if we can't obtain fast memory for wasm. |
maxNumWebAssemblyFastMemories | 4 | |
useFastTLSForWasmContext | true | If true, we will store context in fast TLS. If false, we will pin it to a register. |
useWebAssemblyStreamingApi | false | Allow to run WebAssembly's Streaming API |
useCallICsForWebAssemblyToJSCalls | true | If true, we will use CallLinkInfo to inline cache Wasm to JS calls. |
useEagerWebAssemblyModuleHashing | false | Unnamed WebAssembly modules are identified in backtraces through their hash, if available. |
useObjectRestSpread | true | If true, we will enable Object Rest/Spread feature. |
useBigInt | false | If true, we will enable BigInt support. |
useIntlNumberFormatToParts | false | If true, we will enable Intl.NumberFormat.prototype.formatToParts |
useIntlPluralRules | false | If true, we will enable Intl.PluralRules. |
useArrayAllocationProfiling | true | If true, we will use our normal array allocation profiling. If false, the allocation profile will always claim to be undecided. |
forcePolyProto | false | If true, create_this will always create an object with a poly proto structure. |
forceMiniVMMode | false | If true, it will force mini VM mode on. |
useTracePoints | false |