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

Principled scavenging

Published: 01 May 2001 Publication History
  • Get Citation Alerts
  • Abstract

    Proof-carrying code and typed assembly languages aim to minimize the trusted computing base by directly certifying the actual machine code. Unfortunately, these systems cannot get rid of the dependency on a trusted garbage collector. Indeed, constructing a provably type-safe garbage collector is one of the major open problems in the area of certifying compilation.
    Building on an idea by Wang and Appel, we present a series of new techniques for writing type-safe stop-and-copy garbage collectors. We show how to use intensional type analysis to capture the contract between the mutator and the collector, and how the same method can be applied to support forwarding pointers and generations. Unlike Wang and Appel (which requires whole-program analysis), our new framework directly supports higher-order funtions and is compatible with separate compilation; our collectors are written in provably type-safe languages with rigorous semantics and fully formalized soundness proofs.

    References

    [1]
    G. E. Blelloch and P. Cheng. On bounding time and space for multiprocessor garbage collection. In Proc. ACM SIGPLAN '99 Conf. on Prog. Lang. Design and Implementation, pages 104-117, New York, 1999. ACM Press.
    [2]
    C. J. Cheney. A non-recursive list compacting algorithm. Commun. ACM, 13(11):677-678, 1970.
    [3]
    K. Crary. Typed assembly language: Type theory for machine code. Talk presented at 2000 PCC Workshop, Santa Barbara, CA, June 2000.
    [4]
    K. Crary, D. Walker, and G. Morrisett. Typed memory management in a calculus of capabilities. In Proc. Twenty-Sixth Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pages 262-275. ACM Press, 1999.
    [5]
    K. Crary and S. Weirich. Flexible type analysis. In Proc. 1999 ACM SIGPLAN International Conference on Functional Programming, pages 233-248. ACM Press, Sept. 1999.
    [6]
    K. Crary, S. Weirich, and G. Morrisett. Intensional polymorphism in type-erasure semantics. In Proc. 1998 ACM SIGPLAN International Conference on Functional Programming, pages 301-312. ACM Press, Sept. 1998.
    [7]
    O. Danvy and A. Filinski. Representing control, a study of the cps transformation. Mathematical Structures in Computer Science, 2(4):361-391, 1992.
    [8]
    R. Harper and G. Morrisett. Compiling polymorphism using intensional type analysis. In Twenty-second Annual ACM Symp. on Principles of Prog. Languages, pages 130-141, New York, Jan 1995. ACM Press.
    [9]
    R. Harper and G. Morrisett. Typed closure conversion for recursively-defined functions. In Second International Workshop on Higher Order Operational Techniques in Semantics (HOOTS98, New York, Sep 1998. ACM Press.
    [10]
    Y. Minamide, G. Morrisett, and R. Harper. Typed closure conversion. In Proc. 23rd Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pages 271-283. ACM Press, 1996.
    [11]
    S. Monnier, B. Saha, and Z. Shao. Principled scavenging. Technical Report YALEU/DCS/TR1205, Dept. of Computer Science, Yale University, New Haven, CT, November 2000.
    [12]
    G. Morrisett. Open problems for certifying compilers. Talk presented at 2000 PCC Workshop, Santa Barbara, CA, June 2000.
    [13]
    G. Morrisett, D. Walker, K. Crary, and N. Glew. From system F to typed assembly language. In Symposium on Principles of Programming Languages, pages 85-97, San Diego, CA, Jan. 1998.
    [14]
    G. Necula. Proof-carrying code. In Twenty-Fourth Annual ACM Symp. on Principles of Prog. Languages, pages 106-119, New York, Jan 1997. ACM Press.
    [15]
    G. Necula and P. Lee. The design and implementation of a certifying compiler. In Proc. ACM SIGPLAN '98 Conf. on Prog. Lang. Design and Implementation, pages 333-344, New York, 1998. ACM Press.
    [16]
    S. Nettles and J. O'Toole. Real-time replication garbage collection. In Symposium on Programming Languages Design and Implementation, 1993.
    [17]
    B. Saha, V. Trifonov, and Z. Shao. Fully reflexive intensional type analysis. Technical Report YALEU/DCS/TR-1194, Dept. of Computer Science, Yale University, New Haven, CT, March 2000.
    [18]
    Z. Shao, C. League, and S. Monnier. Implementing typed intermediate languages. In Proc. 1998 ACM SIGPLAN International Conference on Functional Programming (ICFP'98), pages 313-323, September 1998.
    [19]
    M. Tofte and J.-P. Talpin. Implementation of the typed call-by-value calculus using a stack of regions. In Proc. 21st Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pages 188-201. ACM Press, 1994.
    [20]
    A. Tolmach and D. P. Oliva. From ML to Ada: Strongly-typed language interoperability via source translation. Journal of Functional Programming, 8(4):367-412, July 1998.
    [21]
    V. Trifonov, B. Saha, and Z. Shao. Fully reflexive intensional type analsysis. In Proc. 2000 ACM SIGPLAN International Conference on Functional Programming (ICFP'00), pages 82-93. ACM Press, September 2000.
    [22]
    D. Walker and G. Morrisett. Alias types for recursive data structures. In International Workshop on Types in Compilation, Aug. 2000.
    [23]
    D. C. Wang and A. W. Appel. Safe garbage collection = regions + intensional type analysis. Technical Report TR-609-99, Princeton University, 1999.
    [24]
    D. C. Wang and A. W. Appel. Type-preserving garbage collectors (extended version). Technical Report TR-624-00, Princeton University, 2000.
    [25]
    D. C. Wang and A. W. Appel. Type-preserving garbage collectors. In Proc. 28th Annual ACM SIGPLAN-SIGACT Symp. on Principles of Programming Languages, pages 166-178. ACM Press, 2001.
    [26]
    P. Wilson. Uniprocessor garbage collection techniques. In 1992 International Workshop on Memory Management, New York, June 1992. ACM Press.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 36, Issue 5
    May 2001
    330 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/381694
    Issue’s Table of Contents
    • cover image ACM Conferences
      PLDI '01: Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
      June 2001
      331 pages
      ISBN:1581134142
      DOI:10.1145/378795
    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 May 2001
    Published in SIGPLAN Volume 36, Issue 5

    Check for updates

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

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

    Other Metrics

    Citations

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media