Self-optimizing AST interpreters

  • Authors:
  • Thomas Würthinger;Andreas Wöß;Lukas Stadler;Gilles Duboscq;Doug Simon;Christian Wimmer

  • Affiliations:
  • Oracle Labs, Linz, Austria;Johannes Kepler University Linz, Linz, Austria;Johannes Kepler University Linz, Linz, Austria;Johannes Kepler University Linz, Linz, Austria;Oracle Labs, Zurich, Switzerland;Oracle Labs, Redwood Shores, CA, USA

  • Venue:
  • Proceedings of the 8th symposium on Dynamic languages
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

An abstract syntax tree (AST) interpreter is a simple and natural way to implement a programming language. However, it is also considered the slowest approach because of the high overhead of virtual method dispatch. Language implementers therefore define bytecodes to speed up interpretation, at the cost of introducing inflexible and hard to maintain bytecode formats. We present a novel approach to implementing AST interpreters in which the AST is modified during interpretation to incorporate type feedback. This tree rewriting is a general and powerful mechanism to optimize many constructs common in dynamic programming languages. Our system is implemented in Java and uses the static typing and primitive data types of Java elegantly to avoid the cost of boxed representations of primitive values in dynamic programming languages.