1994
DOI: 10.1145/182590.156786
|View full text |Cite
|
Sign up to set email alerts
|

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

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 lamb… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
16
0

Year Published

1997
1997
2015
2015

Publication Types

Select...
5
2
1

Relationship

1
7

Authors

Journals

citations
Cited by 14 publications
(16 citation statements)
references
References 15 publications
0
16
0
Order By: Relevance
“…Rabbit, by Steele (1978), following on the initial design of the language, demonstrated the possibilities of continuationpassing style and of fast first-class functions. Subsequent systems such as Gambit (Feeley 2014), Bigloo (Serrano and Weis 1995), Larceny (Clinger and Hansen 1994), Stalin (Siskind 1999), and Chez (Dybvig 2011) have pioneered a variety of techniques for static analysis, optimization, and memory management, among others. Most other Scheme implementations are AST or bytecode interpreters.…”
Section: Related Workmentioning
confidence: 99%
“…Rabbit, by Steele (1978), following on the initial design of the language, demonstrated the possibilities of continuationpassing style and of fast first-class functions. Subsequent systems such as Gambit (Feeley 2014), Bigloo (Serrano and Weis 1995), Larceny (Clinger and Hansen 1994), Stalin (Siskind 1999), and Chez (Dybvig 2011) have pioneered a variety of techniques for static analysis, optimization, and memory management, among others. Most other Scheme implementations are AST or bytecode interpreters.…”
Section: Related Workmentioning
confidence: 99%
“…For example, partial evaluators such as Schism, Similix, and Pell-Mell lambda-lift source programs and generate scope-free recursive equations [9,11,28]. Compilers such as Larceny and Moby use local, incremental versions of lambda-lifting in their optimizations [10,33], and so did an experimental version of the Glasgow Haskell Compiler [35]. Hanus's compiler for the functional logic language Curry also uses lambda-lifting (personal communication to the first author, FLOPS'02).…”
Section: Lambda-lifting: Whatmentioning
confidence: 99%
“…Today we observe that in the compiler world (Haskell, ML, Scheme), closure conversion has prevailed, with only one exception in Scheme [10]. Conversely, in the program-transformation world [9,11,28], lambda-lifting has prevailed.…”
Section: Closure Conversionmentioning
confidence: 99%
See 1 more Smart Citation
“…In their Scheme compiler Twobit, Clinger and Hansen also use lambdalifting [10]. They, however, modify the flow equations to reduce the arity of lambda-lifted procedures.…”
Section: Curried and Lazy Vs Uncurried And Eager Programsmentioning
confidence: 99%