Summit2008/Sessions/Proposals/Tracing and JavaScript performance: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
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: