Context threading is an interpreter implementation technique that aligns the interpreter's virtual PC with the real PC, to optimize branch prediction. SpiderMonkey needs it. Challenges:
- Preserving the SpiderMonkey Debugger API.
- Preserving the JS_SetBranchCallback API.
- Recoding bytecodes as necessary to improve icache utilization.
- Dealing with
goto out;and any other such jumps in the interpreter.