Title
Loop-aware optimizations in PyPy's tracing JIT
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. We have implemented the scheme in RPython's tracing JIT compiler. PyPy's Python JIT executing simple numerical kernels can become up to two times faster, bringing the performance into the ballpark of static language compilers.
Year
DOI
Venue
2012
10.1145/2384577.2384586
DLS
Keywords
Field
DocType
boxed value unwrapping,python jit,static language compiler,luajit project,basic optimizations loop-aware,simple numerical kernel,loop-aware optimizations,simple pre-processing step,jit compiler,just-in-time compiler,loop-invariant code motion,performance,loop invariant code motion,tracing jit,natural sciences,optimization,languages
Programming language,Loop-invariant code motion,Type checking,Computer science,Parallel computing,Compiler,Loop invariant,Virtual function,Tracing just-in-time compilation,Python (programming language),Tracing
Conference
Volume
Issue
ISSN
48
2
0362-1340
Citations 
PageRank 
References 
3
0.39
12
Authors
3
Name
Order
Citations
PageRank
Håkan Ardö1608.29
Carl Friedrich Bolz229218.69
Maciej FijaBkowski3311.65