Skip to content

Instantly share code, notes, and snippets.

@SMotaal
Created August 4, 2018 18:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SMotaal/a071141795e3030020a2f6ff10778547 to your computer and use it in GitHub Desktop.
Save SMotaal/a071141795e3030020a2f6ff10778547 to your computer and use it in GitHub Desktop.
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment