Allocation Removal by Partial Evaluation in a Tracing JIT

Date Added: Oct 2010
Format: PDF

The performance of many dynamic language implementations suffers from high allocation rates and run-time type checks. This makes dynamic languages less applicable to purely algorithmic problems, despite their growing popularity. In this paper, the authors present a simple compiler optimization based on online partial evaluation to remove object allocations and run-time type checks in the context of a tracing JIT. They evaluate the optimization using a Python VM and find that it gives good results for all their (real-life) benchmarks.