The [Orctimizer] work implements this same idea and replaces this work. However Adrian's ideas are stated in a different light and may be useful for work on Orctimizer.

!!! Notes from AdrianQuark

* Primary goal: eliminate interpretation/indirection overhead for sequences of internal events.
* We'll still have tokens (it might be better to call them continuations) which hold the environment and code pointer, but we'll be able to do more with a token before returning control to the scheduler, and we'll be able to inline internal events like stack push/pop and primitive sites like math.
* Immutable environments allow us to flatten frames and convert them to objects, so variable references become member references.
* Working from AST or DAG, combine sequences of internal events into blocks
* Blocks are scheduled cooperatively
* Use scheduler as trampoline to achieve tail recursion optimization

Operations compiled as follows:
* fork: schedule the right expression, continue with the left expression
* sequence: do the left expression followed by the right
* immediate non-blocking call: may be inlined
* general call: pass continuation to call; call returns control to scheduler when it blocks or finishes, and schedules continuation when it is ready to resume