ABSTRACT
Meta-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 their performance. In this paper we describe the mechanisms in PyPy's meta-tracing JIT that can be used to control runtime feedback in language-specific ways. These mechanisms are flexible enough to express classical VM techniques such as maps and runtime type feedback.
References
- 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 Scholar
Digital Library
- V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: a transparent dynamic optimization system. ACM SIGPLAN Notices, 35(5):1--12, 2000. Google Scholar
Digital 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 Scholar
Digital Library
- C. F. Bolz, A. Cuni, M. Fijałkowski, M. Leuschel, S. Pedroni, and A. Rigo. Allocation removal by partial evaluation in a tracing JIT. In PEPM, PEPM '11, 2011. Google Scholar
Digital Library
- C. F. Bolz, A. Cuni, M. Fijałkowski, and A. Rigo. Tracing the metalevel: PyPy's tracing JIT compiler. In ICOOOLPS, pages 18--25, Genova, Italy, 2009. ACM. Google Scholar
Digital Library
- C. F. Bolz, M. Leuschel, and D. Schneider. Towards a jitting VM for prolog execution. In PPDP, Hagenberg, Austria, 2010. ACM. Google Scholar
Digital Library
- C. Chambers, D. Ungar, and E. Lee. An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes. In OOPSLA, volume 24, 1989. Google Scholar
Digital Library
- L. P. Deutsch and A. M. Schiffman. Efficient implementation of the smalltalk-80 system. In POPL, Salt Lake City, Utah, 1984. ACM. Google Scholar
Digital Library
- Y. Futamura. Partial evaluation of computation process - an approach to a Compiler-Compiler. Higher-Order and Symbolic Computation, 12(4):381--391, 1999. Google Scholar
Digital Library
- A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. R. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, J. Ruderman, E. W. Smith, R. Reitmaier, M. Bebenita, M. Chang, and M. Franz. Trace-based just-in-time type specialization for dynamic languages. In PLDI, PLDI '09, New York, New York, 2009. ACM. ACM ID: 1542528. Google Scholar
Digital Library
- A. Gal and M. Franz. Incremental dynamic code generation with trace trees. Technical Report ICS-TR-06-16, Donald Bren School of Information and Computer Science, University of California, Irvine, Nov. 2006.Google Scholar
- A. Gal, C. W. Probst, and M. Franz. HotpathVM: an effective JIT compiler for resource-constrained devices. In VEE, Ottawa, Ontario, Canada, 2006. ACM. Google Scholar
Digital Library
- A. Georges, D. Buytaert, and L. Eeckhout. Statistically rigorous java performance evaluation. SIGPLAN Notices, 42(10):57--76, 2007. Google Scholar
Digital Library
- B. Grant, M. Mock, M. Philipose, C. Chambers, and S. J. Eggers. DyC: an expressive annotation-directed dynamic compiler for c. Theoretical Computer Science, 248:147--199, Oct. 2000. ACM ID: 357493. Google Scholar
Digital Library
- U. Hölzle and D. Ungar. Optimizing dynamically-dispatched calls with run-time type feedback. In PLDI, pages 326--336, Orlando, Florida, United States, 1994. ACM. Google Scholar
Digital Library
- N. D. Jones, C. K. Gomard, and P. Sestoft. Partial evaluation and automatic program generation. Prentice-Hall, 1993. Google Scholar
Digital Library
- A. Rigo. Representation-based just-in-time specialization and the psyco prototype for python. In PEPM, Verona, Italy, 2004. ACM. Google Scholar
Digital Library
- A. Rigo and S. Pedroni. PyPy's approach to virtual machine construction. In DLS, Portland, Oregon, USA, 2006. ACM. Google Scholar
Digital Library
- J. R. Rose. Bytecodes meet combinators: invokedynamic on the JVM. Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages, 2009. Google Scholar
Digital Library
- G. T. Sullivan, D. L. Bruening, I. Baron, T. Garnett, and S. Amarasinghe. Dynamic native optimization of interpreters. In Workshop on Interpreters, virtual machines and emulators, San Diego, California, 2003. ACM. Google Scholar
Digital Library
- M. Wolczko, O. Agesen, and D. Ungar. Towards a universal implementation substrate for Object-Oriented languages. In OOPSLA workshop on Simplicity, Performance, and Portability in Virtual Machine Design, 1999. Google Scholar
Digital Library
- A. Yermolovich, C. Wimmer, and M. Franz. Optimization of dynamic languages using hierarchical layering of virtual machines. In DLS, pages 79--88, Orlando, Florida, USA, 2009. ACM. Google Scholar
Digital Library
Index Terms
Runtime feedback in a meta-tracing JIT for efficient dynamic languages




Comments