skip to main content
10.1145/2414740.2414743acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

The efficient handling of guards in the design of RPython's tracing JIT

Published:21 October 2012Publication History

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.

References

  1. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  2. V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: A Transparent Dynamic Optimization System. In PLDI 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  4. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  5. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  6. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  7. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  8. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  9. C. F. Bolz, M. Leuschel, and D. Schneider. Towards a jitting VM for prolog execution. In PPDP, Hagenberg, Austria, 2010. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  11. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  12. L. P. Deutsch and A. M. Schiffman. Efficient implementation of the Smalltalk-80 system. In POPL, Salt Lake City, Utah, 1984. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  14. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  15. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  16. U. Hölzle, C. Chambers, and D. Ungar. Debugging optimized code with dynamic deoptimization. PLDI'92, page 32--43. ACM, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  18. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  19. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  20. 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 ScholarGoogle Scholar
  21. 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 ScholarGoogle ScholarDigital LibraryDigital Library
  22. A. Rigo and S. Pedroni. PyPy's approach to virtual machine construction. In DLS, Portland, Oregon, USA, 2006. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. The efficient handling of guards in the design of RPython's tracing JIT

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            VMIL '12: Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
            October 2012
            66 pages
            ISBN:9781450316330
            DOI:10.1145/2414740

            Copyright © 2012 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 21 October 2012

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate4of4submissions,100%

            Upcoming Conference

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader