Skip to main content

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

  • Conference paper
  • First Online:
Functional and Logic Programming (FLOPS 2002)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2441))

Included in the following conference series:

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. J. Armstrong, R. Virding, C. Wikström, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, second edition, 1996. 228

    Google Scholar 

  2. R.L. Bernstein. Producing good code for the case statement. Software — Practice and Experience, 15(10):1021–1024, Oct. 1985. 231

    Article  Google Scholar 

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

    Google Scholar 

  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, 236

    Google Scholar 

  5. L. George and A. W. Appel. Iterated register coalescing. ACM Trans. Prog. Lang. Syst., 18(3):300–324, May 1996. 238

    Article  Google Scholar 

  6. D. Gudeman. Representing type information in dynamically typed languages. Technical Report TR 93-27, University of Arizona, Department of Computer Science, Oct. 1993. 231

    Google Scholar 

  7. Intel Corporation. Intel Pentium 4 and Intel Xeon Processor Optimization Reference Manual, 2002. Document number 248966-05. 232

    Google Scholar 

  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, 240

    Google Scholar 

  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, 240

    Google Scholar 

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

    Chapter  Google Scholar 

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

    Article  Google Scholar 

  12. S. S. Muchnick. Advanced Compiler Design & Implementation. Morgan Kaufman Publishers, San Fransisco, CA, 1997. 230

    Google Scholar 

  13. M. Pettersson. A staged tag scheme for Erlang. Technical Report 029, Information Technology Department, Uppsala University, Nov. 2000. 231

    Google Scholar 

  14. M. Poletto and V. Sarkar. Linear scan register allocation. ACM Trans. Prog. Lang. Syst., 21(5):895–913, Sept. 1999. 238

    Article  Google Scholar 

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

    Google Scholar 

  16. S. Torstendahl. Open Telecom Platform. Ericsson Review, 75(1):14–17, 1997. 229

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2002 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Pettersson, M., Sagonas, K., Johansson, E. (2002). The HiPE/x86 Erlang Compiler: System Description and Performance Evaluation. In: Hu, Z., RodrĂ­guez-Artalejo, M. (eds) Functional and Logic Programming. FLOPS 2002. Lecture Notes in Computer Science, vol 2441. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45788-7_14

Download citation

  • DOI: https://doi.org/10.1007/3-540-45788-7_14

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-44233-2

  • Online ISBN: 978-3-540-45788-6

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics