Summit2008/Sessions/Proposals/Tracing and JavaScript performance: Difference between revisions
m (Summit2008/Sessions/Proposals/Tamarin Tracing JIT Intro moved to Summit2008/Sessions/Proposals/Tracing and JavaScript performance: re-titling session) |
No edit summary |
||
Line 1: | Line 1: | ||
Jim Blandy | Andreas Gal, Jim Blandy, Brendan Eich, Mike Shaver | ||
Tracing and JavaScript performance | |||
Tracing is a technique for implementation of just-in-time compilation well-suited to the needs of JavaScript on the web: it exhibits extremely good compilation performance (in space and speed), even when performing aggressive optimizations, and can efficiently cope with dynamic typing. In addition, it can be implemented in a minimally invasive and incremental manner. Tracing is employed in the experimental Hotpath Java virtual machine, the upcoming luajit2 implementation of the Lua language, the "Tamarin Tracing" ActionScript/JavaScript runtime, and now in the "Tracemonkey" project to bring native code performance to Mozilla's Spidermonkey JavaScript engine. | |||
This session will provide a background in trace-based JIT compilation, an overview of the current state of Mozilla's tracing-related work, and future plans. Spirited discussion of relative implementation priorities and schedules will no doubt ensue. | |||
Fundamentals of tracing: an introduction to the basic principles of tracing (link to papers) | |||
* trace specialization and guarding | |||
** shape induction | |||
* interaction between interpreter and JIT compiler | |||
* applying optimizations to traces | |||
nanojit: a lightweight native code generator specialized for tracing | |||
* implementation of TSSA | |||
* back-end implementation status | |||
Tamarin Tracing status: | |||
* relationship to "Tamarin Central" | |||
* status and near-term goals | |||
* performance characteristics | |||
* current challenges | |||
Tracemonkey status: an overview of current Tracemonkey capabilities, and discussion | |||
* differences from Tamarin Tracing | |||
* work so far (timeline, design choices) | |||
* near-term goals | |||
* preliminary performance results | |||
* current challenges | |||
Future work: making more of our code available to tracing, additional optimizations | |||
* self-hosting the DOM | |||
* escape analysis and allocation removal | |||
Tracing beyond JavaScript: can we apply tracing techniques to other areas of code? | |||
Further reading: | |||
* [http://www2.imm.dtu.dk/~probst/files/GalProbstFranz_VEE2006.pdf HotpathVM: an effective JIT compiler for resource-constrained devices.] | |||
* [http://www.ics.uci.edu/~franz/Site/pubs-pdf/C44Prepub.pdf One Method At A Time Is Quite A Waste Of Time] | |||
* [http://www.ics.uci.edu/%7Efranz/Site/pubs-pdf/ICS-TR-07-10.pdf Efficient Just-In-Time Execution of Dynamically Typed Languages Via Code Specialization Using Precise Runtime Type Inference] | |||
* [http://www.ics.uci.edu/%7Efranz/Site/pubs-pdf/ICS-TR-06-16.pdf Incremental Dynamic Code Generation with Trace Trees] |
Latest revision as of 15:16, 25 July 2008
Andreas Gal, Jim Blandy, Brendan Eich, Mike Shaver
Tracing and JavaScript performance
Tracing is a technique for implementation of just-in-time compilation well-suited to the needs of JavaScript on the web: it exhibits extremely good compilation performance (in space and speed), even when performing aggressive optimizations, and can efficiently cope with dynamic typing. In addition, it can be implemented in a minimally invasive and incremental manner. Tracing is employed in the experimental Hotpath Java virtual machine, the upcoming luajit2 implementation of the Lua language, the "Tamarin Tracing" ActionScript/JavaScript runtime, and now in the "Tracemonkey" project to bring native code performance to Mozilla's Spidermonkey JavaScript engine.
This session will provide a background in trace-based JIT compilation, an overview of the current state of Mozilla's tracing-related work, and future plans. Spirited discussion of relative implementation priorities and schedules will no doubt ensue.
Fundamentals of tracing: an introduction to the basic principles of tracing (link to papers)
- trace specialization and guarding
- shape induction
- interaction between interpreter and JIT compiler
- applying optimizations to traces
nanojit: a lightweight native code generator specialized for tracing
- implementation of TSSA
- back-end implementation status
Tamarin Tracing status:
- relationship to "Tamarin Central"
- status and near-term goals
- performance characteristics
- current challenges
Tracemonkey status: an overview of current Tracemonkey capabilities, and discussion
- differences from Tamarin Tracing
- work so far (timeline, design choices)
- near-term goals
- preliminary performance results
- current challenges
Future work: making more of our code available to tracing, additional optimizations
- self-hosting the DOM
- escape analysis and allocation removal
Tracing beyond JavaScript: can we apply tracing techniques to other areas of code?
Further reading: