Linear Scan Register Allocation in a High-Performance Erlang Compiler

Click on the title to obtain a gzip-ed PostScript version of the paper (97K).


In the context of an optimizing native code compiler for the concurrent functional programming language \erlang{}, we experiment with various register allocation schemes focusing on the recently proposed \emph{linear scan register allocator}. We describe its implementation and extensively report on its behaviour both on register-rich and on register-poor architectures. We also investigate how different options to the basic algorithm and to the compilation process as a whole affect compilation time and quality of the produced code. Overall, the linear scan register allocator is a good choice on register-rich architectures; when compilation time is a concern, it can also be a viable option on register-poor architectures.