The HiPE/x86 Erlang Compiler: System Description and Performance Evaluation

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


Erlang is a concurrent functional language, tailored for large-scale distributed and fault-tolerant control software. Its primary implementation is Ericsson’s Erlang/OTP system, which is based on a virtual machine interpreter. HiPE (High-Performance Erlang) adds a native code execution mode to the Erlang/OTP system. This paper describes the x86 version of HiPE, including a detailed account of decisions and principles that guide the design of its compiler and runtime system. We also present a brief performance evaluation which indicates that HiPE/x86 delivers performance improvements on par with the more mature HiPE/SPARC system.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [1]
    J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, second edition, 1996. 228Google Scholar
  2. [2]
    R.L. Bernstein. Producing good code for the case statement. Software — Practice and Experience, 15(10):1021–1024, Oct. 1985. 231CrossRefGoogle Scholar
  3. [3]
    R.G. Burger, O. Waddell, and R.K. Dybvig. Register allocation using lazy saves, eager restores, and greedy shuffling. In Proceedings of the ACM SIGPLAN’ 95 Conference on Programming Language Design and Implementation, pages 130–138. ACM Press, 1995. 239Google Scholar
  4. [4]
    P. Cheng, R. Harper, and P. Lee. Generational stack collection and profile-driven pretenuring. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI’98, pages 162–173. ACM Press, 1998. 232, 235, 236Google Scholar
  5. [5]
    L. George and A. W. Appel. Iterated register coalescing. ACM Trans. Prog. Lang. Syst., 18(3):300–324, May 1996. 238CrossRefGoogle Scholar
  6. [6]
    D. Gudeman. Representing type information in dynamically typed languages. Technical Report TR 93-27, University of Arizona, Department of Computer Science, Oct. 1993. 231Google Scholar
  7. [7]
    Intel Corporation. Intel Pentium 4 and Intel Xeon Processor Optimization Reference Manual, 2002. Document number 248966-05. 232Google Scholar
  8. [8]
    E. Johansson, M. Pettersson, and K. Sagonas. HiPE: A High Performance Erlang system. In Proceedings of the ACM SIGPLAN Conference on Principles and Practice of Declarative Programming, pages 32–43. ACM Press, Sept. 2000. 228, 230, 240Google Scholar
  9. [9]
    E. Johansson, M. Pettersson, K. Sagonas, and T. Lindgren. The development of the HiPE system: Design and experience report. Springer International Journal of Software Tools for Technology Transfer, 2002. To appear. 228, 230, 240Google Scholar
  10. [10]
    E. Johansson and K. Sagonas. Linear scan register allocation in a high performance Erlang compiler. In Practical Applications of Declarative Languages: Proceedings of the PADL’2002 Symposium, number 2257 in LNCS, pages 299–317. Springer, Jan. 2002. 238CrossRefGoogle Scholar
  11. [11]
    S. Kannan and T. A. Proebsting. Correction to “Producing good code for the case statement”. Software — Practice and Experience, 24(2):233, Feb. 1994. 231CrossRefGoogle Scholar
  12. [12]
    S. S. Muchnick. Advanced Compiler Design & Implementation. Morgan Kaufman Publishers, San Fransisco, CA, 1997. 230Google Scholar
  13. [13]
    M. Pettersson. A staged tag scheme for Erlang. Technical Report 029, Information Technology Department, Uppsala University, Nov. 2000. 231Google Scholar
  14. [14]
    M. Poletto and V. Sarkar. Linear scan register allocation. ACM Trans. Prog. Lang. Syst., 21(5):895–913, Sept. 1999. 238CrossRefGoogle Scholar
  15. [15]
    D. Tarditi. Compact garbage collection tables. In Proceedings of the ACM SIGPLAN International Symposium on Memory Management, pages 50–58. ACM Press, Oct. 2000. 235Google Scholar
  16. [16]
    S. Torstendahl. Open Telecom Platform. Ericsson Review, 75(1):14–17, 1997. 229Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

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

Personalised recommendations