NAMASTE: Adaptive Optimization in Interpreters

  • 2012-10-11
  • Research

Interpreters inhabit a sweet spot on the performance/price curve of programming language implementation.


Interpreters inhabit a sweet spot on the performance/price curve of programming language implementation. This means that it is cheaper to implement an interpreter than a compiler, but on the other hand that compilers are usually faster than interpreters. This is particularly true for high abstraction-level interpreters, where many traditional optimizations are not effective. Consequently, such interpreters have a bad reputation for being too slow.

This talk focuses on a previously successful line of research in purely interpretative optimizations carried out at the Compilers and Languages group of the Institute of Computer Languages, and presents new results of continuing this line of research. In particular, we give a brief overview of purely interpretative inline caching using quickening and show how to leverage this foundation for a novel adaptive optimization: native machine-abstraction execution, or NAMASTE for short. We have implemented NAMASTE and report that this technique boosts our previously maximum reported speedup by more than 40%: from a factor of up to 2.4 to a factor of up to 3.4. Since this technique is purely interpretative, too, it offers the usual benefits of interpreters: ease of implementation, portability, and - compared to a just-in-time compiler, constant and low memory usage.


Stefan Brunthaler received his PhD in 2011 from the Vienna University of Technology under the supervision of Prof. Dr. Knoop, and has been working as Postdoctoral Scholar at the Secure Systems and Languages Laboratory at the University of California, Irvine, since April 2011. At the SSLLab his primary research interests are in the areas of language-based security (specifically researching the area of large-scale automated software diversity) and the efficient implementation of dynamically-typed programming languages, with a focus on Python. In addition, he worked on an early prototype of an “upcompiler”, which refers to the decompilation of a legacy binary to Java source code.


This talk is organized by the Compilers and Languages Group at the Institute of Computer Languages. Tea at the library of E185/1, Argentinierstr. 8, 4th floor (central) at 14:30.


Note: This is one of the thousands of items we imported from the old website. We’re in the process of reviewing each and every one, but if you notice something strange about this particular one, please let us know. — Thanks!