• Overview
  • Either interpreter or compiler. Not both.
  • Superblocks and executors
  • Creating executors
  • Exits from executors
  • Linking executors
  • Making progress
  • Inter-superblock optimization
  • Making "hot" exits fast and "cold" exits small
  • The implementation
  • Making "hot" exits fast
  • Making "cold" exits small
  • Minimizing memory use
  • Each executor gets a table of exit data
  • Fixed number of exit objects
  • Exit data
  • Representation changes
  • Hotness counters
  • EXIT_IF and UNLIKELY_EXIT_IF
  • Guaranteeing progress
  • Guaranteeing progress within an executor
  • Exiting to invalid executors
  • The mechanics of transferring execution between executors
  • JIT compiler
  • Interpreter
  • Future optimizations