Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Performance and evaluation of LISP systems
Performance and evaluation of LISP systems
ORBIT: an optimizing compiler for scheme
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Revised report on the algorithmic language scheme
ACM SIGPLAN Notices
SOAR: Smalltalk without bytecodes
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
A third generation Smalltalk-80 implementation
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Managing stack frames in Smalltalk
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
Memory allocation and higher-order functions
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
The design and evaluation of a high performance Smalltalk system
The design and evaluation of a high performance Smalltalk system
BrouHaHa- A portable Smalltalk interpreter
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
The implementation of PC Scheme
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Creating efficient systems for object-oriented languages
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Engines build process abstractions
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
The runtime environment for Scheme, a Scheme implementation on the 88000
ASPLOS III Proceedings of the third international conference on Architectural support for programming languages and operating systems
Reasoning about continuations with control effects
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Design of the opportunistic garbage collector
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Efficient stack allocation for tail-recursive languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Representing control in the presence of first-class continuations
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
A dynamic extent control operator for partial continuations
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Some issues and strategies in heap management and memory hierarchies
ACM SIGPLAN Notices
CONS should not CONS its arguments, or, a lazy alloc is a smart alloc
ACM SIGPLAN Notices
HOPL-II The second ACM SIGPLAN conference on History of programming languages
Space-efficient closure representations
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Lambda, the ultimate label or a simple optimizing compiler for Scheme
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
ACM SIGPLAN Notices
A library of high level control operators
ACM SIGPLAN Lisp Pointers
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
CONS should not CONS its arguments, part II: Cheney on the M.T.A.
ACM SIGPLAN Notices
Efficient and safe-for-space closure conversion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Revised report on the algorithmic language scheme
ACM SIGPLAN Lisp Pointers
Higher-Order and Symbolic Computation
Implementation Strategies for First-Class Continuations
Higher-Order and Symbolic Computation
Safe and Principled Language Interoperation
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Higher-Order and Symbolic Computation
History of programming languages---II
Molecule: using monadic and streaming I/O to compose process networks on the JVM
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
Scheme and Smalltalk continuations may have unlimited extent. This means that a purely stack-based implementation of continuations, as suffices for most languages, is inadequate. Several implementation strategies have been described in the literature. Determining which is best requires knowledge of the kinds of programs that will commonly be run.Danvy, for example, has conjectured that continuation captures occur in clusters. That is, the same continuation, once captured, is likely to be captured again. As evidence, Danvy cited the use of continuations in a research setting. We report that Danvy's conjecture is somewhat true in the commercial setting of MacScheme+Toolsmith™, which provides tools for developing Macintosh user interfaces in Scheme. These include an interrupt-driven event system and multitasking, both implemented by liberal use of continuations.We describe several implementation strategies for continuations and compare four of them using benchmarks. We conclude that the most popular strategy may have a slight edge when continuations are not used at all, but that other strategies perform better when continuations are used and Danvy's conjecture holds.