

Speculative Staging for Interpreter Optimization - davidkhess
http://arxiv.org/abs/1310.2300

======
davidkhess
The abstract:

Interpreters have a bad reputation for having lower performance than just-in-
time compilers. We present a new way of building high performance interpreters
that is particularly effective for executing dynamically typed programming
languages. The key idea is to combine speculative staging of optimized
interpreter instructions with a novel technique of incrementally and
iteratively concerting them at run-time.

This paper introduces the concepts behind deriving optimized instructions from
existing interpreter instructions---incrementally peeling off layers of
complexity. When compiling the interpreter, these optimized derivatives will
be compiled along with the original interpreter instructions. Therefore, our
technique is portable by construction since it leverages the existing
compiler's backend. At run-time we use instruction substitution from the
interpreter's original and expensive instructions to optimized instruction
derivatives to speed up execution.

Our technique unites high performance with the simplicity and portability of
interpreters---we report that our optimization makes the CPython interpreter
up to more than four times faster, where our interpreter closes the gap
between and sometimes even outperforms PyPy's just-in-time compiler.

