2012
DOI: 10.1145/2480360.2384586
|View full text |Cite
|
Sign up to set email alerts
|

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 basi… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
3

Citation Types

0
3
0

Year Published

2015
2015
2023
2023

Publication Types

Select...
1
1
1

Relationship

1
2

Authors

Journals

citations
Cited by 3 publications
(3 citation statements)
references
References 15 publications
0
3
0
Order By: Relevance
“…Loop optimizations are prevalent in modern compilers such as PyPy [8,9,72], V8 [82], the HotSpot C2 Server Compiler [68], and the GraalVM Compiler [24,52]. Techniques such as loop peeling [10] and loop unrolling [27] utilize duplication to replicate the loop body.…”
Section: Compiler Optimizationsmentioning
confidence: 99%
“…Loop optimizations are prevalent in modern compilers such as PyPy [8,9,72], V8 [82], the HotSpot C2 Server Compiler [68], and the GraalVM Compiler [24,52]. Techniques such as loop peeling [10] and loop unrolling [27] utilize duplication to replicate the loop body.…”
Section: Compiler Optimizationsmentioning
confidence: 99%
“…Standard Optimizations RPython's trace optimizer includes a suite of standard compiler optimizations, such as commonsubexpression elimination, copy propagation, constant folding, and many others (Ardö et al 2012). One advantage of trace compilation for optimization is that the linear control-flow graph of a trace is just a straight line.…”
Section: Generic Rpython Optimizationsmentioning
confidence: 99%
“…Loop-invariant code motion Another common compiler optimization is loop-invariant code motion. RPython implements this in a particularly simple way, by peeling off a single iteration of the loop, and then performing its standard suite of forward analyses to optimize the loop further (Ardö et al 2012). 3 Because many loopinvariant computations are performed in the peeled iteration, they can then be omitted the second time, removing them from the actual loop body.…”
Section: Generic Rpython Optimizationsmentioning
confidence: 99%