Co-operative JIT Compilation for Resource-Constrained Low-Power Coprocessors
summary
A cooperative JIT traces execution on the main core and emits type-specialized basic blocks that migrate to the low‑power coprocessor, using trace-based compilation plus lazy basic‑block versioning and stack/frame transformation to move validated objects. Prototype compiles a mruby subset and runs on ESP32-C6, evaluated on four apps; power drops to levels comparable with handwritten C while generated code is up to 6.6× larger code size but still under ~2 KB for the biggest app.
AI-written summary · about
chapters (15)
- 0:00Cooperative JIT compilation intro
- 3:21LP processor challenges in IoT
- 5:30Offloading Ruby to LP processor
- 7:21JIT for resource constraints
- 8:25How cooperative JIT works
- 10:38Execution migration between CPUs
- 12:05Memory-efficient object management
- 13:54Prototype evaluation results
- 16:25Power savings and JIT overhead
- 17:51Runtime size constraints
- 18:35Adapting JIT to other languages
- 19:42Related work comparison
- 21:14Conclusion and future
- 21:55Q&A: Building the JIT
- 23:37Q&A: Processor architectures
related talks
20mBYOJ: Build your own JIT with Ruby
39mFireside chat on JIT compiler
26mAn Analysis of Compiled Code Reusability in Dynamic Compilation
19mReusing Just-in-Time Compiled Code
36mWrite once, run on every boards: portable mruby
44mBuild Your Own VM with JIT Compilation for Dummies
22mGigue: A JIT Code Binary Generator for Hardware Testing
36mTBA
