Abstract
Just-in-time compilers offer the biggest achievable payoff performance-wise, but their implementation is a non-trivial, time-consuming task affecting the interpreter's maintenance for years to come, too. Recent research addresses this issue by providing ways of leveraging existing just-in-time compilation infrastructures.
Though there has been considerable research on improving the efficiency of just-in-time compilers, the area of optimizing interpreters has gotten less attention as if the implementation of a dynamic translation system was the "ultima ratio" for efficiently interpreting programming languages. We present optimization techniques for improving the efficiency of interpreters without requiring just-in-time compilation thereby maintaining the ease-of-implementation characteristic that brought many people to implementing an interpreter in the first place.
- }}Scott B. Baden. High performance storage reclamation in an object-based memory system. Technical report, Berkeley, CA, USA, 1982. Google Scholar
Digital Library
- }}Jeffrey M. Barth. Shifting garbage collection overhead to compile time. Communications of the ACM, 20(7):513--518, July 1977. Google Scholar
Digital Library
- }}Carl Friedrich Bolz, Antonio Cuni, Maciej Fijalkowski, and Armin Rigo. Tracing the meta-level: PyPy's tracing JIT compiler. In Proceedings of the 4th Workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems (ICOOOLPS '09), Lecture Notes in Computer Science, pages 18--25. Springer, 2009. Google Scholar
Digital Library
- }}James R. Bell. Threaded code. Communications of the ACM, 16(6):370--372, 1973. Google Scholar
Digital Library
- }}Stefan Brunthaler. Virtual-machine abstraction and optimization techniques. In Proceedings of the 4th International Workshop on Bytecode Semantics, Verification, Analysis and Transformation (BYTECODE '09), volume 253(5) of Electronic Notes in Theoretical Computer Science, pages 3--14, Amsterdam, The Netherlands, December 2009. Elsevier. Google Scholar
Digital Library
- }}Stefan Brunthaler. Efficient inline caching without dynamic translation. In Proceedings of the 2010 ACM Symposium on Applied Computing (SAC '10), pages 2155--2156, New York, NY, USA, March 2010. ACM. Google Scholar
Digital Library
- }}Stefan Brunthaler. Inline caching meets quickening. In Proceedings of the 24th European Conference on Object-Oriented Programming, Maribor, Slovenia, June 21-25, 2010 (ECOOP '10), volume 6183/2010 of Lecture Notes in Computer Science, pages 429--451. Springer, 2010. Google Scholar
Digital Library
- }}George E. Collins. A method for overlapping and erasure of lists. Communications of the ACM, 3(12):655--657, December 1960. Google Scholar
Digital Library
- }}Dalvik VM Instruction Formats. Online, (checked: May 2010) 2007.Google Scholar
- }}L. Peter Deutsch and Daniel G. Bobrow. An efficient, incremental, automatic garbage collector. Communications of the ACM, 19(9):522--526, 1976. Google Scholar
Digital Library
- }}M. Anton Ertl and David Gregg. Optimizing indirect branch prediction accuracy in virtual machine interpreters. In Proceedings of the SIGPLAN '03 Conference on Programming Language Design and Implementation (PLDI '03), pages 278--288, New York, NY, USA, 2003. ACM. Google Scholar
Digital Library
- }}M. Anton Ertl and David Gregg. The structure and performance of efficient interpreters. Journal of Instruction-Level Parallelism, 5:1--25, November 2003.Google Scholar
- }}M. Anton Ertl and David Gregg. Combining stack caching with dynamic superinstructions. In Proceedings of the 2004 Workshop on Interpreters, virtual machines and emulators (IVME '04), pages 7--14, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- }}M. Anton Ertl. Stack caching for interpreters. In Proceedings of the SIGPLAN '95 Conference on Programming Language Design and Implementation (PLDI '95), pages 315--327, 1995. Google Scholar
Digital Library
- }}Brent Fulgham. The computer language benchmarks game. http://shootout.alioth.debian.org/.Google Scholar
- }}Intel. Intel turbo boost technology in Intel core microarchitecture (nehalem) based processors. online, November 2008.Google Scholar
- }}Pramod G. Joisha. Compiler optimizations for nondeferred reference counting garbage collection. In Proceedings of the 5th International Symposium on Memory Management (ISMM '06), pages 150--161, New York, NY, USA, 2006. ACM. Google Scholar
Digital Library
- }}Pramod G. Joisha. A principled approach to nondeferred reference-counting garbage collection. In Proceedings of the 4th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE '08), pages 131--140, New York, NY, USA, March 2008. ACM. Google Scholar
Digital Library
- }}Glenn Krasner, editor. Smalltalk-80: Bits of History, Words of Advice. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1983, reprinted with corrections 1984. Google Scholar
Digital Library
- }}Xavier Leroy. Java bytecode verification: Algorithms and formalizations. Journal of Automated Reasoning, 30(3-4):235--269, 2003. Google Scholar
Digital Library
- }}Steven Pemberton and Martin Daniels. Pascal Implementation: The P4 Compiler and Interpreter. Ellis Horwood, 1982.Google Scholar
- }}Yunhe Shi, Kevin Casey, M. Anton Ertl, and David Gregg. Virtual machine showdown: Stack versus registers. ACM Transactions on Architecture and Code Optimization, 4(4):1--36, 2008. Google Scholar
Digital Library
- }}David M. Ungar and David A. Patterson. chapter 11, Berkeley Smalltalk: Who Knows Where the Time Goes?, pages 189--206. September 1982.Google Scholar
- }}Allen Wirfs-Brock. Smalltalk-80: Bits of History, Words of Advice, chapter 4, Design Decisions for Smalltalk-80 Implementors, pages 41--56. In Krasner {Kra84}, 1982.Google Scholar
- }}David Wheeler. sloccount. http://www.dwheeler.com/sloccount/, May 2010.Google Scholar
- }}Kevin Williams, Jason McCandless, and David Gregg. Dynamic interpretation for dynamic scripting languages. In Proceedings of the 8th annual IEEE/ACM SIGMICRO/SIGPLAN International Symposium on Code Generation and Optimization (CGO '10), pages 278--287, April 2010. Google Scholar
Digital Library
- }}Phil Winterbottom and Rob Pike. The design of the Inferno virtual machine. In Proceedings of the 42nd IEEE Computer Society International Conference, San Jose, California, US (COMPCON '97), pages 241--244, 1997.Google Scholar
- }}Alexander Yermolovich, Christian Wimmer, and Michael Franz. Optimization of dynamic languages using hierarchical layering of virtual machines. In Proceedings of the 5th Symposium on Dynamic Languages (DLS '09), pages 79--88, New York, NY, USA, 2009. ACM. Google Scholar
Digital Library
Index Terms
Efficient interpretation using quickening
Recommendations
Python Interpreter Performance Deconstructed
Dyla'14: Proceedings of the Workshop on Dynamic Languages and ApplicationsThe Python programming language is known for performing poorly on many tasks. While to some extent this is to be expected from a dynamic language, it is not clear how much each dynamic feature contributes to the costs of interpreting Python. In this ...
Efficient interpretation using quickening
DLS '10: Proceedings of the 6th symposium on Dynamic languagesJust-in-time compilers offer the biggest achievable payoff performance-wise, but their implementation is a non-trivial, time-consuming task affecting the interpreter's maintenance for years to come, too. Recent research addresses this issue by providing ...
Definitional Interpreters for Higher-Order Programming Languages
Higher-order programming languages (i.e., languages in which procedures or labels can occur as values) are usually defined by interpreters that are themselves written in a programming language based on the lambda calculus (i.e., an applicative language ...







Comments