Call-threading looks like this:
while(1) { interpreter_state = *virtual_program_counter++(interpreter_state); }
With context-threading you JIT very simple code which looks like this and has only direct calls:
interpreter_state = put1(interpreter_state); interpreter_state = put1(interpreter_state); interpreter_state = plus(interpreter_state);
Call-threading looks like this:
There's an indirect jump here.With context-threading you JIT very simple code which looks like this and has only direct calls: