Programmed deallocation without dangling reference
Information Processing Letters
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
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
A performance analysis of automatically managed top of stack buffers
ISCA '87 Proceedings of the 14th annual international symposium on Computer architecture
Garbage collection can be faster than stack allocation
Information Processing Letters
Common LISP: the language
Proc. of a conference on Functional programming languages and computer architecture
Three implementation models for scheme
Three implementation models for scheme
Real-time concurrent collection on stock multiprocessors
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
A variable-arity procedural interface
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Implementation strategies for continuations
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Simple generational garbage collection and fast allocation
Software—Practice & Experience
Optimizing smalltalk message performance
Object-oriented concepts, databases, and applications
Lifetime analysis of dynamically allocated objects
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Higher order escape analysis: optimizing stack allocation in functional program implementations
Proceedings of the third European symposium on programming on ESOP '90
Representing control in the presence of first-class continuations
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
25 years of the international symposia on Computer architecture (selected papers)
Portable and efficient dynamic storage management in Ada
SIGAda '87 Proceedings of the 1987 annual ACM SIGAda international conference on Ada
The implementation of PC Scheme
LFP '86 Proceedings of the 1986 ACM conference on LISP and functional programming
Journal of the ACM (JACM)
A real-time garbage collector based on the lifetimes of objects
Communications of the ACM
List processing in real time on a serial computer
Communications of the ACM
Communications of the ACM
Shifting garbage collection overhead to compile time
Communications of the ACM
A model and stack implementation of multiple environments
Communications of the ACM
IEEE Std 1178-1990, IEEE Standard for the Scheme Programming Language
IEEE Std 1178-1990, IEEE Standard for the Scheme Programming Language
C: A Reference Manual
Garbage collection in a large LISP system
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Trading data space for reduced time and code space in real-time garbage collection on stock hardware
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
Block structure (Extended Abstract): Retention or deletion?
STOC '71 Proceedings of the third annual ACM symposium on Theory of computing
Proceedings of ACM conference on Proving assertions about programs
An Ada code generator for VAX 11/780 with Unix
SIGPLAN '80 Proceedings of the ACM-SIGPLAN symposium on The ADA programming language
Generation Scavenging: A non-disruptive high performance storage reclamation algorithm
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Rabbit: A Compiler for Scheme
Garbage collection and other optimizations
Garbage collection and other optimizations
Orbit: an optimizing compiler for scheme
Orbit: an optimizing compiler for scheme
Algol-60 Implementation
LISP 1.5 Programmer's Manual
The contour model of block structured processes
ACM SIGPLAN Notices
Infant mortality and generational garbage collection
ACM SIGPLAN Notices
Safe and leakproof resource management using Ada83 limited types
ACM SIGAda Ada Letters
Iterators: signs of weakness in object-oriented languages
ACM SIGPLAN OOPS Messenger
Equal rights for functional objects or, the more things change, the more they are the same
ACM SIGPLAN OOPS Messenger
CONS should not CONS its arguments, part II: Cheney on the M.T.A.
ACM SIGPLAN Notices
Optimistic stack allocation for java-like languages
Proceedings of the 5th international symposium on Memory management
Hi-index | 0.01 |
Lazy allocation is a model for allocating objects on the execution stack of a high-level language which does not create dangling references. Our model provides safe transportation into the heap for objects that may survive the deallocation of the surrounding stack frame. Space for objects that do not survive the deallocation of the surrounding stack frame is reclaimed without additional effort when the stack is popped. Lazy allocation thus performs a first-level garbage collection, and if the language supports garbage collection of the heap, then our model can reduce the amortized cost of allocation in such a heap by filtering out the short-lived objects that can be more efficiently managed in LIFO order. A run-time mechanism called result expectation further filters out unneeded results from functions called only for their effects. In a shared-memory multi-processor environment, this filtering reduces contention for the allocation and management of global memory.Our model performs simple local operations, and is therefore suitable for an interpreter or a hardware implementation. Its overheads for functional data are associated only with assignments, making lazy allocation attractive for mostly functional programming styles. Many existing stack allocation optimizations can be seen as instances of this generic model, in which some portion of these local operations have been optimized away through static analysis techniques.Important applications of our model include the efficient allocation of temporary data structures that are passed as arguments to anonymous procedures which may or may not use these data structures in a stack-like fashion. The most important of these objects are functional arguments (funargs), which require some run-time allocation to preserve the local environment. Since a funarg is sometimes returned as a first-class value, its lifetime can survive the stack frame in which it was created. Arguments which are evaluated in a lazy fashion (Scheme delays or "suspensions") are similarly handled. Variable-length argument "lists" themselves can be allocated in this fashion, allowing these objects to become "first-class". Finally, lazy allocation correctly handles the allocation of a Scheme control stack, allowing Scheme continuations to become first-class values.