skip to main content
article
Free Access

Lambda, the ultimate label or a simple optimizing compiler for Scheme

Published:01 July 1994Publication History
Skip Abstract Section

Abstract

Optimizing compilers for higher-order languages need not be terribly complex. The problems created by non-local, non-global variables can be eliminated by allocating all such variables in the heap. Lambda lifting makes this practical by eliminating all non-local variables except for those that would have to be allocated in the heap anyway. The eliminated non-local variables become local variables that can be allocated in registers. Since calls to known procedures are just gotos that pass arguments, lifted lambda expressions are just assembly language labels that have been augmented by a list of symbolic names for the registers that are live at that label.

References

  1. 1 Andrew W. Appel. Compiling with Continuations. Cambridge University Press, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2 AT&T Bell Laboratories. Standard ML of New Jersey system modules (version 0.93). February 15, 1993.Google ScholarGoogle Scholar
  3. 3 Lennart Augustsson. A compiler for Lazy ML. Uonference Record of the 198~1 A CM Symposium on Lisp and Functional Programming, pages 218-227, August 1984. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 4 Clinger, W.D. The Scheme 311 compiler: an exercise in denotational semantics. Conference Record of the 198d A CM Symposium on Lisp and Functional Programming, August 1984, pages 356-364. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 5 Clinger, W.D., Hartheimer, A.H., and Ost, E.M. Implementation strategies for continuations. Proceedings of the 1988 A CM Conference on Lisp and Functional Programming, pages 124-131, July 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6 Clinger, W., and Rees, J. Macros that work. Proceedings of the 1991 ACM Conference on Principles of Programm~ng Languages, pages 155-162, January 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 7 Clinger, W., and Rees, J. {editors}. Revised4 report on the algorithmic language Scheme. Lisp Pointers 4(3), July-September 1991, pages 1-55. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8 R. Kent Dybvig. The Scheme Programming Language. Prentice-Hall, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9 M~rc Feeley and James Miller. A parallel virtual machine for efficient Scheme compilation. Proceedings of the 1990 ACM Conference on Lisp and Functional Programming, June 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10 Richard P. Gabriel. Performance and Evaluation of Lisp Systems. MIT Press, 1985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11 Lars Thomas Hansen. The Impact of Programming Style on the Performance of Scheme Programs. M.S. thesis, University of Oregon, 1992.Google ScholarGoogle Scholar
  12. 12 Chris Hanson. Efficient stack allocation for tailrecursive languages. Proceedings of the 1990 A CM Conference on Lisp and Functional Programming, June 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. 13 Robert Hieb, R. Kent Dybvig, and Carl Bruggeman. Representing control in the presence of first-class continuations. PLDI '90, SIGPLAN Notices, 25(6), pages 66-77, June 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. 14 John Hughes. Super combinators: a new implementation method for applicative languages. Proceedings of the 1992 Symposium on Lisp and Functional Programming, pages 122-132.Google ScholarGoogle Scholar
  15. 15 IEEE Standard 1178-1990. IEEE Standard for the Scheme Programming Language. IEEE, New York, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. 16 David Kranz, Richard Kelsey, Jonathan Rees, Paul Hudak, James Philbin, and Norman Adams. Orbit: an optimizing compiler for Scheme. Proceedings of the SiG- PLAN '86 Symposium on Compiler Construction, SIG- PLAN Notices, 21(7), pages 219-233, July 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. 17 Lightship Software, Inc. MacScheme Version 4 software and manual. Lightship Software, 1992.Google ScholarGoogle Scholar
  18. 18 Robert A MacLachlan. The Python compiler for CMU Common Lisp. Proceedings of the 1992 A CM Conference on Lisp and Functional Programming, LISP Pointers, 5(1), pages 235-246, June 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. 19 Guillermo Juan Rozas. Taming the Y operator. Proceedings of the 1992 A CM Conference on Lisp and Functional Programming, LISP Pointers, 5(1), pages 226- 234, June 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. 20 Guy Lewis Steele Jr. and Gerald Jay Sussman. Lambda, the ultimate imperative. MIT Artificial Intelligence Memo 353, March 1976.Google ScholarGoogle Scholar
  21. 21 Guy Lewis Steele Jr. Lambda, the ultimate declarative. MiT Artificial Intelligence Memo 379, November 1976.Google ScholarGoogle Scholar
  22. 22 Guy Lewis Steele Jr. Debunking the "expensive procedure call" myth, or procedure call implementations considered harmful, or lambda, the ultimate GOTO. ACM Conference Proceedings, pages 153-162. ACM, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. 23 Guy Lewis Steele Jr. Rabbit: a compiler for Scheme. MIT Artificial Intelligence Laboratory Technical Report 474, May 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. 24 Guy Lewis Steele Jr. Compiler optimization based on viewing LAMBDA as RENAME + GOTO. In AI: An MIT Perspective. Patrick Henry Winston and Richard Henry Brown, editors. MIT Press, 1980.Google ScholarGoogle Scholar
  25. 25 D.A. Turner. New implementation techniques for applicative languages. Software--Practice and Experience, 9, pages 31-49, 1979.Google ScholarGoogle Scholar
  26. 26 Mitchell Wand and Paul Steckler. Selective and lightweight closure conversion. Proceedings of the 1995 A CM Symposium on Principles of Programming Languages, pages 435-445, January 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Lambda, the ultimate label or a simple optimizing compiler for Scheme

            Recommendations

            Comments

            Login options

            Check if you have access through your login credentials or your institution to get full access on this article.

            Sign in

            Full Access

            • Published in

              cover image ACM SIGPLAN Lisp Pointers
              ACM SIGPLAN Lisp Pointers  Volume VII, Issue 3
              July-Sept. 1994
              327 pages
              ISSN:1045-3563
              DOI:10.1145/182590
              Issue’s Table of Contents
              • cover image ACM Conferences
                LFP '94: Proceedings of the 1994 ACM conference on LISP and functional programming
                July 1994
                327 pages
                ISBN:0897916433
                DOI:10.1145/182409

              Copyright © 1994 ACM

              Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

              Publisher

              Association for Computing Machinery

              New York, NY, United States

              Publication History

              • Published: 1 July 1994

              Check for updates

              Qualifiers

              • article

            PDF Format

            View or Download as a PDF file.

            PDF

            eReader

            View online with eReader.

            eReader