SPUR is a research prototype of a tracing just-in-time compiler (TJIT) for CIL.
Watch the SPUR video on channel 9!
What is SPUR?
Tracing just-in-time compilers (TJITs) determine frequently executed traces (hot paths and loops) in running programs and focus their optimization effort by emitting optimized machine code specialized to these traces. Prior work has established this strategy to be especially beneficial for dynamic languages such as JavaScript, where the TJIT interfaces with the interpreter and produces machine code from the JavaScript trace.
This direct coupling with a JavaScript interpreter makes it difficult to harness the power of a TJIT for other components that are not written in JavaScript, e.g., the DOM implementation or the layout engine inside a browser. Furthermore, if a TJIT is tied to a particular high-level language interpreter, it is difficult to reuse it for other input languages as the optimizations are likely targeted at specific idioms of the source language.
We try to addresses these issues in the SPUR research project, where we are developing a prototype TJIT for Microsoft’s Common Intermediate Language CIL (the target language of C#, VisualBasic, F#, and many other languages). Working on CIL enables TJIT optimizations for any program compiled to this platform.
- Benjamin S. Lerner, Brian Burg, Wolfram Schulte, and H Venter, C3: An Experimental, Extensible, Reconfigurable Platform for HTML-based Applications, in 2nd USENIX Conference on Web Application Development, USENIX, 15 June 2011
- Benjamin S. Lerner, Herman Venter, and Dan Grossman, Supporting Dynamic, Third-Party Code Customizations in JavaScript Using Aspects, in OOPSLA 2010, Association for Computing Machinery, Inc., 17 October 2010
- Nikolai Tillmann, Michal Moskal, Wolfram Schulte, Herman Venter, and Manuel Fahndrich, The Unthinkable: Automated Theorem Provers for (Tracing) Just-in-time Compilers, 24 May 2010
- Wolfram Schulte and Nikolai Tillmann, Automatic Parallelization of Programming Languages: Past, Present and Future, in International Workshop on Multicore Software Engineering, May 2010
- Michael Bebenita, Florian Brandner, Manuel Fahndrich, Francesco Logozzo, Wolfram Schulte, Nikolai Tillmann, and Herman Venter, SPUR: A Trace-Based JIT Compiler for CIL, no. MSR-TR-2010-27, 25 March 2010
- Francesco Logozzo and Herman Venter, Rapid Atomic Type Analysis by Abstract Interpretation. Application to JavaScript optimization, in Proceedings of the International Conference on Compiler Construction, Springer Verlag, March 2010
- Michael Bebenita, Florian Brandner, Manuel Fahndrich, Francesco Logozzo, Wolfram Schulte, Nikolai Tillmann, and Herman Venter, SPUR: a trace-based JIT compiler for CIL, in Proceedings of the ACM international conference on Object oriented programming systems languages and applications, ACM, New York, NY, USA, 2010



