Linear Scan Register Allocation in a High-Performance Erlang Compiler

  • Erik Johansson
  • Konstantinos Sagonas
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2257)


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 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.


Virtual Machine Basic Block Graph Coloring Physical Register Compilation Time 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading, MA, 1986.Google Scholar
  2. 2.
    J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, second edition, 1996.Google Scholar
  3. 3.
    P. Briggs, K. D. Cooper, and L. Torczon. Improvements to graph coloring register allocation. ACM Trans. Prog. Lang. Syst., 16(3):428–455, May 1994.CrossRefGoogle Scholar
  4. 4.
    G. J. Chaitin. Register allocation & spilling via graph coloring. In Proceedings of the SIGPLAN Symposium on Compiler Construction, pages 98–105. ACM Press, June 1982.Google Scholar
  5. 5.
    G. J. Chaitin, M. A. Auslander, A. K. Chandra, J. Cocke, M. E. Hopkins, and P.W. Markstein. Register allocation via coloring. Computer Languages, 6(1):47–57, Jan. 1981.CrossRefGoogle Scholar
  6. 6.
    L. George and A. W. Appel. Iterated register coalescing. ACM Trans. Prog. Lang. Syst., 18(3):300–324, May 1996.CrossRefGoogle Scholar
  7. 7.
    E. Johansson, M. Pettersson, and K. Sagonas. HiPE: A High Performance Erlang system. In Proceedings of the ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming, pages 32–43. ACM Press, Sept. 2000.Google Scholar
  8. 8.
    S. S. Muchnick. Advanced Compiler Design & Implementation. Morgan Kaufman Publishers, San Fransisco, CA, 1997.Google Scholar
  9. 9.
    J. Park and S.-M. Moon. Optimistic register coalescing. In Proceedings of the 1998 International Conference on Parallel Architecture and Compilation Techniques, pages 196–204. IEEE Press, Oct. 1998.Google Scholar
  10. 10.
    M. Poletto, W. C. Hsieh, D. R. Engler, and M. F. Kaashoek. ’C and tcc: A language and compiler for dynamic code generation. ACM Trans. Prog. Lang. Syst., 21(2):324–369, Mar. 1999.CrossRefGoogle Scholar
  11. 11.
    M. Poletto and V. Sarkar. Linear scan register allocation. ACM Trans. Prog. Lang. Syst., 21(5):895–913, Sept. 1999.CrossRefGoogle Scholar
  12. 12.
    O. Traub, G. Holloway, and M. D. Smith. Quality and speed in linear-scan register allocation. In Proceedings of SIGPLAN Conference on Programming Language Design and Implementation, pages 142–151. ACM Press, June 1998.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Erik Johansson
    • 1
  • Konstantinos Sagonas
    • 1
  1. 1.Computing Science DepartmentUppsala UniversitySweden

Personalised recommendations