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

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-2) was last changed on 11-Jan-2017 14:29 by Arthur Peters