Loop-aware optimizations in PyPy's tracing JIT

4Citations
Citations of this article
20Readers
Mendeley users who have this article in their library.
Get full text

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. Copyright © 2012 ACM.

Cite

CITATION STYLE

APA

Ardö, H., Bolz, C. F., & Fijałkowski, M. (2013). Loop-aware optimizations in PyPy’s tracing JIT. In ACM SIGPLAN Notices (Vol. 48, pp. 63–71). https://doi.org/10.1145/2480360.2384586

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free