Proceedings on Third international conference on logic programming
Structure and interpretation of computer programs
Structure and interpretation of computer programs
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The implementation of PC Scheme
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
A Theory of Programming Language Semantics
A Theory of Programming Language Semantics
Behavioral semantics of nonrecursive control structures
Programming Symposium, Proceedings Colloque sur la Programmation
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
Recursion is more efficient than iteration
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
An efficient environment allocation scheme in an interpreter for a lexically-scoped LISP
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
LAMBDA: The Ultimate Declarative
LAMBDA: The Ultimate Declarative
The contour model of block structured processes
ACM SIGPLAN Notices
Implementation strategies for continuations
LFP '88 Proceedings of the 1988 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
A dynamic extent control operator for partial continuations
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CONS should not CONS its arguments, or, a lazy alloc is a smart alloc
ACM SIGPLAN Notices
Space-efficient closure representations
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
The influence of browsers on evaluators or, continuations to program web servers
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Implementation Strategies for First-Class Continuations
Higher-Order and Symbolic Computation
Formalizing Implementation Strategies for First-Class Continuations
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Hi-index | 0.00 |
This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on average.The algorithm has been built into a virtual machine to efficiently implement at the assembly level the Actor language PLASMA, an Actor-oriented version of PROLOG and a variant of SCHEME, currently in use on 8086, 68000 and Vax.The rationale to use the heap memory is that continuations are available via a single pointer in a unified memory and can be shared optimally when recurrently captured, which is simply impossible using a strategy based on stack recopy. Further, non-captured continuations can be incrementally garbage collected on the fly.Part I describes the elementary recursive instructions of the virtual machine. Part II presents and proves the marking-collecting strategy. Part III safely generalizes the transformation "call + return = branch" in a way compatible with the possible capture of the current continuation. An appendix relates its integration in the Virtual Scheme Machine supporting Scheme 84.