Tracing the meta-level
Top Cited Papers
- 6 July 2009
- proceedings article
- Published by Association for Computing Machinery (ACM)
Abstract
We attempt to apply the technique of Tracing JIT Compilers in the context of the PyPy project, i.e., to programs that are interpreters for some dynamic languages, including Python. Tracing JIT compilers can greatly speed up programs that spend most of their time in loops in which they take similar code paths. However, applying an unmodified tracing JIT to a program that is itself a bytecode interpreter results in very limited or no speedup. In this paper we show how to guide tracing JIT compilers to greatly improve the speed of bytecode interpreters. One crucial point is to unroll the bytecode dispatch loop, based on two kinds of hints provided by the implementer of the bytecode interpreter. We evaluate our technique by applying it to two PyPy interpreters: one is a small example, and the other one is the full Python interpreter.Keywords
This publication has 15 references indexed in Scilit:
- Virtual-Machine Abstraction and Optimization TechniquesElectronic Notes in Theoretical Computer Science, 2009
- RPythonPublished by Association for Computing Machinery (ACM) ,2007
- PyPy's approach to virtual machine constructionPublished by Association for Computing Machinery (ACM) ,2006
- HotpathVMPublished by Association for Computing Machinery (ACM) ,2006
- Dynamic native optimization of interpretersPublished by Association for Computing Machinery (ACM) ,2003
- DyC: an expressive annotation-directed dynamic compiler for CTheoretical Computer Science, 2000
- DynamoACM SIGPLAN Notices, 2000
- Optimizing direct threaded code by selective inliningACM SIGPLAN Notices, 1998
- A general approach for run-time specialization and its application to CPublished by Association for Computing Machinery (ACM) ,1996
- Efficiently computing static single assignment form and the control dependence graphACM Transactions on Programming Languages and Systems, 1991