Ignition is the register-based interpreter used within V8. It executes an internal representation of JavaScript computations rather than being a separate programming language with different source-level results.[ref]
A small abstract bytecode example explains the role of such a representation. To compute a function returning x + 2, imagine instructions load_arg r0; const r1, 2; add r2, r0, r1; return r2. For argument 5, the represented values are r0 = 5, r1 = 2 and r2 = 7, so the result is 7. An interpreter selects and performs the operation named by each instruction.
This instruction spelling is invented for explanation; it is not an Ignition disassembly or a promise about a particular V8 release. The example separates source syntax, an intermediate instruction representation and execution. A register machine supplies a related abstract way to reason about stored intermediate values and operations, without identifying its formal instruction set with a production engine's bytecode.
Actual JavaScript operations require more than an arithmetic mnemonic. The expression x + 2 can produce numerical addition or string concatenation depending on the value of x. Supplying "5" yields "52" rather than 7. Whatever internal instructions implement it must preserve the applicable ECMAScript behavior.[ref]
Understanding Ignition is therefore useful for studying execution and implementation costs, while the language specification remains the reference for observable program meaning.
JavaScript engine 2026-11-05
A JavaScript engine implements the execution of JavaScript programs according to the applicable ECMAScript language rules. It reads program structure and performs the operations that produce values, state changes and errors. The engine is one component of an environment; a web browser additionally supplies document, networking and interaction facilities.[ref]
For example, function square(n) { return n * n; } square(7); evaluates to 49. An interpreter can execute a representation of these operations, while compilation can translate operations into another executable form. Just-in-time compilation performs compilation during execution rather than requiring a wholly separate advance compilation step. These implementation choices do not change the multiplication result required by the language.
A concrete implementation is V8, whose Ignition is documented as a register-based interpreter. Such an implementation can use intermediate bytecode rather than repeatedly treating source text as its direct execution format. This example describes one engine architecture, not a requirement that every JavaScript engine use the same machinery.[ref]
Host facilities must be distinguished from language execution. Evaluating a call involving document requires the environment to supply that object; implementing ECMAScript alone does not promise the Document Object Model. Conversely, numerical computations need not create any document nodes.
Performance comparisons require a specified workload. Parsing, first execution, repeated execution and calls into host facilities can have different costs. Timing only a tiny warmed-up function therefore does not measure every aspect of loading or running an application, even when the returned values are identical.
V8 2026-11-05
V8 is an open-source engine implementing JavaScript through ECMAScript and also executing WebAssembly. It can be embedded in applications, so the engine and the application supplying its environment are distinct components.[ref]
For a simple language-level example, [1, 2, 3].map(x => x * x) evaluates to an array containing 1, 4, 9. The specified array and multiplication behavior belongs to ECMAScript; V8 supplies an implementation of that behavior. The same expression does not require a document or a web browser.
The project's d8 developer shell supplies a small environment for running programs. A file containing console.log(6 * 7); prints 42 when run in that shell. The multiplication is language behavior, whereas the output facility is supplied by the environment.[ref]
V8 includes Ignition, a register-based interpreter. Interpreter machinery, bytecode and compilation strategies concern how an engine executes a program, rather than changing the program's specified mathematical result.[ref]
An embedding application can supply additional objects and functions. A Document Object Model operation therefore depends on a suitable host, not merely on the presence of V8. Likewise, a performance comparison must name the engine version, workload and measurement conditions rather than treating one fast numerical expression as a measurement of an entire application.