my student project "Modernising register allocation in SBCL" has
been one of the two accepted by google. Thanks to Paul Khuong for
his crucial feedback!
Here is the preliminary plan/abstract:
This project aims to improve the compiler back end by enhancing the
register allocation procedure. To realize this goal, we propose to
+ a new heuristic optimization based on coloring the global
+ live ranges and live range splitting,
+ spill code insertion.
The task of the register allocator is to assign an unconstrained
number of temporary names (TNs) in the intermediate representation
(IR) to a finite number of registers. A naive approach yields too
many memory operations resulting in a reduced execution speed. The
currently implemented SBCL register allocator performs only graph
coloring, essentially treating spills by coloring with stack slots.
order to improve the allocator, we propose to integrate a new
heuristic graph coloring method inspired by the concepts introduced
Briggs et al. (1994) in the SBCL compiler. According to Briggs'
results of the optimistic coloring, the proposed
enhancements can be
expected to increase performance of produced code by up to 15%.