← Back
Home › Systems › Operating systems and runtimes

jit-vm

JIT-compiling VM

V8, HotSpot

SystemTechniques · 18Primitives · 28 jit-vm Deoptimizationcompilers · medium: Speculate with guards, and on failure rebuild the slow-tier frames from compile-time metadata and resume there, so optimized code may assume the common case.›Escape analysiscompilers · medium: Prove which allocations never outlive or leave their creator, then put them on the stack, split them into scalars, or drop their locks.›Function inliningcompilers · medium: Inline call sites by cost model and call-graph order; enables downstream optimizationsGenerational garbage collectioncompilers · medium: Split the heap by age, collect the small young region often and cheaply, and rarely touch old data; wins whenever most objects die young.›Global value numberingcompilers · medium: Detect equivalent computations in SSA form to remove redundancyIncremental and concurrent garbage…compilers · medium: Trace the heap in small steps or on other threads while the program runs, and use barriers to keep the collector's view correct.›Inline cachescompilers · medium: Per-call-site cache of "this object shape, that slot or target", turning dynamic property and method lookup into a compare and a load.›Machine code emissioncompilers · low: Encode instructions to bytes for x86-64 and AArch64, branch relaxation, constant poolsSSA formcompilers · low: Give every variable exactly one definition, merging at joins with phi functions; def-use becomes explicit and optimizations turn sparse and cheap.›Hidden classes (shapes)compilers · low: Objects that gained the same properties in the same order share one layout descriptor, so a property is an index and the layout is one comparable id.›Bytecode interpretercompilers · low: Register/stack VM dispatch loop for executing compiled plans or rules (SQLite VDBE, nftables)Executable memory under W^Xcompilers · low: How JITs and code generators emit machine code under W^X: RW to RX flips, dual mappings, per-thread write toggles, and the instruction-cache flush.›Value tagging and NaN-boxingcompilers · low: Pack the type and the payload of any value into one 64-bit word, using spare low bits of aligned pointers or the unused payload of NaNs, so type tests are one mask compare.›Strongly connected componentsgraphs · low: Tarjan/Kosaraju SCCs for cycle detection in dependency graphsMark-sweep garbage collectioncompilers · low: Find everything reachable from the roots, free the rest in place; handles cycles, never moves objects, and is the base of most production collectors.›Dirty page trackinghardware-os · low: Write-protection or PML logs of modified guest/process pagesDominator treecompilers · low: Dominators via Lengauer-Tarjan or Cooper-Harvey-Kennedy; dominance frontiers for SSAHash consingdata-structures · low: Intern structurally equal immutable terms so equality is pointer comparison and sharing is maximalMemory orderingconcurrency · low: What Relaxed, Acquire, Release and SeqCst atomics actually guarantee, what they cost on x86 and ARM, and which one each pattern needs.›Tree pattern matchingcompilers · low: Matching AST patterns with metavariablesInterval treedata-structures · low: Index of ranges that answers "which intervals overlap this point or range?" in O(log n + k); static sorted-array form is the compact, cache-friendly choice.›Numa aware allocationhardware-os · low: Allocate memory and pin threads on the local NUMA node; first-touch and interleave policiesSlab allocatorsystems · low: Pre-carve pages into equal-size slots per size class with an in-place free list: O(1) alloc and free, no external fragmentation, cache-warm reuse.›+ 11 more techniques+ 12 more primitives

Similar systems

Share the most building blocks with this one.