Docs
Understanding the engine
In-depth Articles:
- Warp: Improved JS Performance
- Compiler Compiler: A Twitch series
- A New RegExp Engine
- Future-proofing the Debugger Implementation
- The Baseline Interpreter
Embedding SpiderMonkey
- Examples and Documentation
- Custom Architectures readme
- Proposal template for ports
- mozilla.dev.tech.js-engine (ARCHIVED)
- mozilla.dev.tech.js-engine.internals (ARCHIVED)
The Monkeys
John Howard created some amazing images for SpiderMonkey.
BaldrMonkey
Task: WebAssembly Compiler
Status: Ongoing
- Making asm.js/WebAssembly compilation more parallel in Firefox Benjamin Bouvier (2016) (story of the refactoring of Odin into Baldr + parallel compilation)
- Calls between JavaScript and WebAssembly are finally fast 🎉, Lin Clark (2018) (fast calls between JIT and WebAssembly in both ways)
- Making WebAssembly even faster: Firefox’s new streaming and tiering compiler, Lin Clark (2018)
- firefox’s low-latency webassembly compiler, Andy Wingo (2020)
- John Howard’s notes on the image
IonMonkey
Task: Optimizing Compiler
Status: Ongoing
- IonMonkey in Firefox 18, David Anderson (2012)
- Just-in-Time Value specialization, Igor Costa, Péricles Alves, Henrique Nazaré Santos, Fernando Magno Quintão Pereira, CGO (2013) 🎓 📄
- Recover Instructions, Nicolas B. Pierron (2014)
- Optimizing Away, Nicolas B. Pierron (2014)
- Evil on your behalf, Nicolas B. Pierron (2016)
- Branch Pruning, Nicolas B. Pierron (2016)
- John Howard’s posters archive, and a bit about Ion Monkey
JaegerMonkey
Task: The first method compiler in SpiderMonkey
Status: Deceased
- Improving JavaScript performance with JägerMonkey, ? (2010)
- Starting JägerMonkey, Dave Mandelin (2010)
- Land Ho, Fast JavaScript, David Anderson (2010)
- JaegerMonkey development diary - shaping up THE JavaScript engine for Firefox 4.0, Soumya Deb (2010)
OdinMonkey
Task: ASM.js compiler
Status: Deceased
- asm.js in Firefox Nightly, Luke Wagner (2013)
- asm.js AOT compilation and startup performance, Luke Wagner (2014)