Node.js
V8 flags
Learn V8 flags and optimization.
What are V8 flags?
V8 flags are switches that change V8 engine behavior when Node.js starts. node --turbofan turns on the TurboFan optimizer; node --jitless disables JIT; node --no-opt turns optimization off.
A v8Flag(name) function models this mapping: 'turbofan' returns '--turbofan', 'jitless' returns '--jitless', others return '--no-opt'. These flags are for debugging and experimentation; production usually keeps defaults. Disabling JIT (jitless) helps in some security contexts; disabling optimization (no-opt) helps you see whether a bug is optimization induced.
JIT and optimization
--turbofan turns on the TurboFan optimizer; it promotes frequently called functions to machine code. --jitless disables JIT entirely; code is interpreted, slower but more predictable. --no-opt disables optimization while keeping JIT on.
The three flags answer different needs. v8Flag('turbofan') returns '--turbofan'; v8Flag('jitless') returns '--jitless'. When debugging, --no-opt helps you tell whether a bug stems from optimization. Disabling JIT matters in environments with security constraints such as CSP. Careless use of these flags in production can seriously hurt performance.
Exercise Write the V8 flag function
Write function v8Flag(name). Add if (name === 'turbofan') return '--turbofan';, if (name === 'jitless') return '--jitless'; and return '--no-opt';. Print console.log(v8Flag('turbofan')) and console.log(v8Flag('jitless')).
Show example solution
function v8Flag(name) {
if (name === 'turbofan') return '--turbofan';
if (name === 'jitless') return '--jitless';
return '--no-opt';
}
console.log(v8Flag('turbofan'));
console.log(v8Flag('jitless'));
Test yourself
-
Complete the TurboFan branch
if (name === 'turbofan') return '____';
Show answer
if (name === 'turbofan') return '--turbofan';
-
Match each piece to its role
- --turbofan
- Enables optimizer
- --jitless
- Disables JIT
- --no-opt
- Halts optimization
- TurboFan
- V8 optimizer
-
Which flag completely disables JIT?
v8Flag('jitless')
- --jitless
- --no-opt
- --turbofan
- --max-old-space-size
Show answer
--jitless — --jitless completely disables JIT.
Next lesson: Memory profiling