On understanding types, data abstraction, and polymorphism
ACM Computing Surveys (CSUR) - The MIT Press scientific computation series
Analysis of functional programs to detect run-time garbage cells
ACM Transactions on Programming Languages and Systems (TOPLAS)
The definition of Standard ML
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compile-time garbage collection by sharing analysis
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
The spineless tagless G-machine
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Tag-free garbage collection for strongly typed programming languages
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Type systems for programming languages
Handbook of theoretical computer science (vol. B)
Semantic analyses for storage management optimizations in functional language implementations
Semantic analyses for storage management optimizations in functional language implementations
Incremental garbage collection without tags
ESOP'92 Symposium proceedings on 4th European symposium on programming
Space efficient conservative garbage collection
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Compiler-directed type reconstruction for polymorphic languages
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Tag-free garbage collection using explicit type parameters
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Garbage collection for strongly-typed languages using run-time type reconstruction
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Abstract models of memory management
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Formal models of distributed memory management
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Garbage collection and local variable type-precision and liveness in Java virtual machines
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Dynamic typing for distributed programming in polymorphic languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Space efficient conservative garbage collection
ACM SIGPLAN Notices - Best of PLDI 1979-1999
TIL: a type-directed, optimizing compiler for ML
ACM SIGPLAN Notices - Best of PLDI 1979-1999
A Retrospective on Region-Based Memory Management
Higher-Order and Symbolic Computation
Typing unmarshalling without marshalling types
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Several papers, have recently claimed that garbage collection can be performed on untagged data in the presence of ML-style type polymorphism. They rely on the ability to reconstruct the type of any reachable object during garbage collection. The bad news is that this is false—there can be reachable objects in the program whose type cannot be determined by the garbage collector. The good news is that tag-free garbage collection can be performed anyway—any object whose type cannot be determined by the collector is, in fact, garbage. Such objects can be discarded by the collector. This is the key result of this paper.We present a type reconstruction algorithm that can determine the type of any non-garbage object. Unfortunately, the implementation of the tag-free collector for a polymorphically typed language is difficult in ways that were not described in the previous papers, and we address some implementation issues as well. However, we mainly describe how to perform type reconstruction during garbage collection and do not attempt to address practical issues of the garbage collection process.