It doesn't turn the bytecode into machine code.
the Ignition interpreter takes the Abstract syntax tree and produce a bytecode from it.
after the bytecode has been produced the Ignition interpreter it start to execute those bytecodes directly.
i know it's a bit confusing when you hear that the interpreter produce a bytecodes and also execute those bytecodes.
but that's actually what the Ignition interpreter does. it's not only executing it's also producing bytecodes
so don't get confused by the name.
for example we have the following bytecode
LdaSmi 5
when the Ignition sees that bytecode it will actually call a function from the engine which handles that instruction.