ABSTRACT
Tracing just-in-time (JIT) compilers record linear control flow paths, inserting operations called guards at points of possible divergence. These operations occur frequently in generated traces and therefore it is important to design and implement them carefully to find the right trade-off between deoptimization, memory overhead, and (partly) execution speed. In this paper, we perform an empirical analysis of runtime properties of guards. This is used to guide the design of guards in the RPython tracing JIT.
- D. Ancona, M. Ancona, A. Cuni, and N. D. Matsakis. RPython: a step towards reconciling dynamically and statically typed OO languages. In DLS, Montreal, Quebec, Canada, 2007. ACM. Google ScholarDigital Library
- V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: A Transparent Dynamic Optimization System. In PLDI 2000. Google ScholarDigital Library
- M. Bebenita, F. Brandner, M. Fahndrich, F. Logozzo, W. Schulte, N. Tillmann, and H. Venter. SPUR: a trace-based JIT compiler for CIL. In OOPSLA, Reno/Tahoe, Nevada, USA, 2010. ACM. Google ScholarDigital Library
- M. Bebenita, M. Chang, G. Wagner, A. Gal, C. Wimmer, and M. Franz. Trace-based compilation in execution environments without interpreters. In Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java, pages 59--68, Vienna, Austria, 2010. ACM. Google ScholarDigital Library
- C. F. Bolz, A. Cuni, M. FijaBkowski, M. Leuschel, S. Pedroni, and A. Rigo. Allocation removal by partial evaluation in a tracing JIT. In PEPM, Austin, Texas, USA, 2011. Google ScholarDigital Library
- C. F. Bolz, A. Cuni, M. FijaBkowski, M. Leuschel, S. Pedroni, and A. Rigo. Runtime feedback in a meta-tracing JIT for efficient dynamic languages. ICOOOLPS'11, page 9:1--9:8. ACM, 2011. Google ScholarDigital Library
- C. F. Bolz, A. Cuni, M. FijaBkowski, and A. Rigo. Tracing the meta-level: PyPy's tracing JIT compiler. In ICOOOLPS, pages 18--25, Genova, Italy, 2009. ACM. Google ScholarDigital Library
- C. F. Bolz, A. Kuhn, A. Lienhard, N. Matsakis, O. Nierstrasz, L. Renggli, A. Rigo, and T. Verwaest. Back to the future in one week -- implementing a Smalltalk VM in PyPy. In Self-Sustaining Systems, pages 123--139. 2008. Google ScholarDigital Library
- C. F. Bolz, M. Leuschel, and D. Schneider. Towards a jitting VM for prolog execution. In PPDP, Hagenberg, Austria, 2010. ACM. Google ScholarDigital Library
- O. Callaú, R. Robbes, É. Tanter, and D. Röthlisberger. How developers use the dynamic features of programming languages: the case of Smalltalk. In Proceedings of the 8th Working Conference on Mining Software Repositories, MSR'11, page 23--32. ACM, 2011. Google ScholarDigital Library
- R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, 13(4):451--490, 1991. Google ScholarDigital Library
- L. P. Deutsch and A. M. Schiffman. Efficient implementation of the Smalltalk-80 system. In POPL, Salt Lake City, Utah, 1984. ACM. Google ScholarDigital Library
- A. Gal, M. Franz, B. Eich, M. Shaver, and D. Anderson. Trace-based Just-in-Time Type Specialization for Dynamic Languages. In PLDI 2009. Google ScholarDigital Library
- A. Gal, C. W. Probst, and M. Franz. HotpathVM: An Effective JIT Compiler for Resource-constrained Devices. VEE 2006, pages 144--153. ACM, 2006. Google ScholarDigital Library
- A. Holkner and J. Harland. Evaluating the dynamic behaviour of Python applications. In Proceedings of the Thirty-Second Australasian Conference on Computer Science - Volume 91, pages 19--28, Wellington, New Zealand, 2009. Australian Computer Society, Inc. Google ScholarDigital Library
- U. Hölzle, C. Chambers, and D. Ungar. Debugging optimized code with dynamic deoptimization. PLDI'92, page 32--43. ACM, 1992. Google ScholarDigital Library
- T. Kotzmann and H. Mossenbock. Run-time support for optimizations based on escape analysis. CGO'07, page 49--60, Washington, DC, USA, 2007. IEEE Computer Society. Google ScholarDigital Library
- T. Kotzmann and H. Mössenböck. Escape analysis in the context of dynamic compilation and deoptimization. VEE'05, page 111--120. ACM, 2005. Google ScholarDigital Library
- M. Paleczny, C. Vick, and C. Click. The Java HotSpot server compiler. In Proceedings of the Java Virtual Machine Research and Technology Symposium on Java Virtual Machine Research and Technology Symposium - Volume 1, Monterey, California, 2001. USENIX Association. Google ScholarDigital Library
- M. Pall. LuaJIT 2.0 intellectual property disclosure and research opportunities, June 2009. http://lua-users.org/lists/lua-l/2009--11/msg00089.html.Google Scholar
- G. Richards, S. Lebresne, B. Burg, and J. Vitek. An analysis of the dynamic behavior of JavaScript programs. In PLDI 2010, pages 1--12, Toronto, Ontario, Canada, 2010. ACM. Google ScholarDigital Library
- A. Rigo and S. Pedroni. PyPy's approach to virtual machine construction. In DLS, Portland, Oregon, USA, 2006. ACM. Google ScholarDigital Library
Index Terms
- The efficient handling of guards in the design of RPython's tracing JIT
Recommendations
Amalgamating different JIT compilations in a meta-tracing JIT compiler framework
DLS 2020: Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic LanguagesMost virtual machines employ just-in-time (JIT) compilers to achieve high-performance. Trace-based compilation and method-based compilation are two major compilation strategies in JIT compilers. In general, the former excels in compiling programs with ...
Runtime feedback in a meta-tracing JIT for efficient dynamic languages
ICOOOLPS '11: Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and SystemsMeta-tracing JIT compilers can be applied to a variety of different languages without explicitly encoding language semantics into the compiler. So far, they lacked a way to give the language implementor control over runtime feedback. This restricted ...
Loop-aware optimizations in PyPy's tracing JIT
DLS '12One of the nice properties of a tracing just-in-time compiler (JIT) is that many of its optimizations are simple, requiring one forward pass only. This is not true for loop-invariant code motion which is a very important optimization for code with tight ...
Comments