Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
article
Free access

Garbage collection for strongly-typed languages using run-time type reconstruction

Published: 01 July 1994 Publication History
  • Get Citation Alerts
  • Abstract

    Garbage collectors perform two functions: live-object detection and dead-object reclamation. In this paper, we present a new technique for live-object detection based on run-time type reconstruction for a strongly typed, polymorphic language. This scheme uses compile-time type information together with the run-time tree of activation frames to determine the exact type of every object participating in the computation. These reconstructed types are then used to identify and traverse the live heap objects during garbage collection.
    We describe an implementation of our scheme for the Id parallel programming language compiled for the *T multiprocessor architecture. We present simulation studies that compare the performance of type-reconstructing garbage collection with conservative garbage collection and compiler-directed storage reclamation.

    References

    [1]
    Shall Aditya and Alejandro Caro. Compiler-directed Type Reconstruction for Polymorphic Languages. In Proceedings of the A CM Conference on Functional Programming Languages and Computer Architecture, Copenhagen, Denmark, pages 74-82, June 1993.
    [2]
    Andrew W. Appel. Runtime tags aren't necessary. Lisp and Symbolic Computation, 2(2):153-163, June 1989.
    [3]
    Andrew W. Appel. A runtime system. Lisp and Symbolic Computation, 3(4):343-380, November 1990.
    [4]
    Zena M. Ariola and Arvind. A syntactic approach to program transformations. In Proceedings of the A CM SIGPLAN Symposium on Partial Evaluation and Semantics Based Program Manipulation, June 1991.
    [5]
    H.-J. Boehm and M. Weiser. Garbage collection in an uncooperative environment. Software' Practice and Experience, 18:807-820, September 1988.
    [6]
    Benjamin Goldberg. Tag-free garbage collection for strongly typed programming languages. In SIGPLAN '91 Conference on Programming Language Design and Implementation, pages 165-176, June 1991.
    [7]
    Benjamin Goldberg and Michael Gloger. Polymorphic Type Reconstruction for Garbage Collection without Tags. In Proceedings of the A CM Conference on Lisp and Functional Programming, pages 53-65, 1992.
    [8]
    Shail Aditya Gupta. An incremental Type Inference System for the Programming Language Id. Master's thesis, MIT, Laboratory for Computer Science, September 1990. Available as Technical Report MIT/LCS/TR- 488.
    [9]
    James E. Hicks. Experiences with compiler-directed storage reclamation. In Conference on Functional Programming Languages and Computer Architecture, 1993.
    [10]
    Harry G. Mairson. Deciding ML Typability is Complete for Deterministic Exponential Time. In Proceedings o/ the 17th A GM Symposium on Principles o/Programming Languages, pages 382-401, January 1990.
    [11]
    Rishiyur S. Nikhil. Id 90.1 reference manual. CSG Memo 284-2, MIT Laboratory for Computer Science, Cambridge, MA 02139, September 1990.
    [12]
    G. M. Papadopoulos, G. A. Boughton, R. Greiner, and M. J. Beckerle. *T: Integrated building blocks for parallel computing. In Proceedings of Supercomputing '93, 1993.
    [13]
    Simon L. PeytonJones. Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine. Journal of Functional Programming, 2(2):127-202, April 1992.
    [14]
    Kenneth R. Traub. A compiler for the MIT Tagged- Token Datafiow Architecture. Technical Report TR- 370, MIT Laboratory for Computer Science, Cambridge, MA 02139, August 1986.
    [15]
    Paul R. Wilson. Uniprocessor Garbage Collection Techniques. In Proceedings of the International Workshop on Memory Management, St. Malo, France, pages 1-42. gpringer-Verlas, September 1992. LNCS 637.

    Cited By

    View all

    Recommendations

    Reviews

    Olivier Louis Marie Lecarme

    In the general framework of automatic garbage collection, this paper considers the specific case of strongly typed languages. The problem is much more complex when no typing information is stored in objects themselves at runtime. Omitting this information saves the cost of storing and maintaining it for all objects, but it makes it impossible to use the only well-known techniques for conventional dynamically typed programming languages. The idea developed in the paper is to reconstruct the typing information at runtime, when garbage collection becomes necessary. An image of compile-time type information must exist at runtime, and it is used together with the runtime tree of activation frames. Since reconstruction is needed only just before garbage collection, one can assume better storage and time performances than when complete type information is handled for all objects. The paper describes the scheme for type reconstruction and its implementation for a peculiar situation, namely an experimental parallel programming language for an experimental multiprocessor architecture. It is not clear whether this peculiar case adds anything specific to the problem considered. The process of garbage collection is divided into the phases of live-object detection and dead-object reclamation. Only the first phase is considered, and more specifically its object identification subphase. The performance of type-reconstructed garbage collection is compared, using several benchmarks, to those of conservative garbage collection, which does not use type information, and of compiler-directed storage reclamation, which does not use garbage collection. The conclusions one can draw from this comparison are not striking. It would be interesting to study the application of the ideas developed in this paper to more conventional programming languages.

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Lisp Pointers
    ACM SIGPLAN Lisp Pointers  Volume VII, Issue 3
    July-Sept. 1994
    327 pages
    ISSN:1045-3563
    DOI:10.1145/182590
    Issue’s Table of Contents
    • cover image ACM Conferences
      LFP '94: Proceedings of the 1994 ACM conference on LISP and functional programming
      July 1994
      327 pages
      ISBN:0897916433
      DOI:10.1145/182409
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 01 July 1994
    Published in SIGPLAN-LISPPOINTERS Volume VII, Issue 3

    Check for updates

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)50
    • Downloads (Last 6 weeks)6

    Other Metrics

    Citations

    Cited By

    View all

    View Options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Get Access

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media