kirancodes.me
To Proof Maintenance & Beyond!

Loop-aware optimizations in PyPy's tracing JIT

Håkan Ardö, Carl Friedrich Bolz, Maciej Fijalkowski

Abstract

One of the nice properties of a tracing just-in-time compiler (JIT) is that many of its optimizations are simple, requiring one forward pass only. This is not true for loop-invariant code motion which is a very important optimization for code with tight kernels. Especially for dynamic languages that typically perform quite a lot of loop invariant type checking, boxed value unwrapping and virtual method lookups. In this paper we explain a scheme pioneered within the context of the LuaJIT project for making basic optimizations loop-aware by using a simple pre-processing step on the trace without changing the optimizations themselves.

Related papers