V8 starts with interpreting bytecode (Ignition), then hot code gets tiered up to a non-optimising JIT without an IR (Sparkplug), and even hotter code goes an optimising one with an IR (TurboFan)
That way it can start executing quickly and not waste time on compiling/optimising things that only get run a few times
That way it can start executing quickly and not waste time on compiling/optimising things that only get run a few times