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
Incremental incrementally compacting garbage collection
SIGPLAN '87 Papers of the Symposium on Interpreters and interpretive techniques
Common LISP: the language
The art of computer programming, volume 3: (2nd ed.) sorting and searching
The art of computer programming, volume 3: (2nd ed.) sorting and searching
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
LELISP, a portable and efficient LISP system
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Garbage collection in a large LISP system
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
LISP 1.5 Programmer's Manual
Hi-index | 0.00 |
Lisp objects are heap- rather than stack-allocated because their extent is generally indefinite. Since stack-deallocation is performed without running the garbage collector, speed improvements are expected. Dedicated hardware can stack-allocate objects associated with reference counters or microcode daemons such that one can exactly know the status of the object to be deallocated and perform whatever appropriate treatment (usually a copy in the heap) according to its reachability. However such a solution is not efficient on stock hardware. This paper presents and analyses a new technique to efficiently solve this problem. It creates first class dynamic extent objects (DEO) that are stack-allocated, permits to access them only while they are in the stack and prevent to follow up dangling pointers. Every usual indefinite extent object has its counterpart as a DEO associated with the same set of operators. Finally DEO do not require dedicated hardware and may be properly compiled. The technique can be used within other programming languages. Some performance figures are discussed at the end of the paper.