Polymorphic type reconstruction for garbage collection without tags
- 1 January 1992
- proceedings article
- Published by Association for Computing Machinery (ACM)
- Vol. V (1) , 53-65
- https://doi.org/10.1145/141471.141504
Abstract
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.This publication has 7 references indexed in Scilit:
- Tag-free garbage collection for strongly typed programming languagesPublished by Association for Computing Machinery (ACM) ,1991
- On determining lifetime and aliasing of dynamically allocated data in higher-order functional specificationsPublished by Association for Computing Machinery (ACM) ,1990
- Runtime tags aren't necessaryHigher-Order and Symbolic Computation, 1989
- The spineless tagless G-machinePublished by Association for Computing Machinery (ACM) ,1989
- Computer-time garbage collection by sharing analysisPublished by Association for Computing Machinery (ACM) ,1989
- Analysis of functional programs to detect run-time garbage cellsACM Transactions on Programming Languages and Systems, 1988
- On understanding types, data abstraction, and polymorphismACM Computing Surveys, 1985