Deriving residual reference count garbage collectors

  • Wolfram Schulte
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 844)


We present a strategy to derive an efficient reference count garbage collector for any applicative program by only modifying it on the source code level. The key to the approach is to consider the memory as an explicit parameter of the applicative program, thus enabling to implement data structures in terms of memory primitives. On the basis of equivalence preserving source level transformations, reference count instructions are generated and optimized in order to reduce their inherent run-time overhead, and to introduce run-time detected selective update on recursive data structures.


applicative languages garbage collection reference counts storage management optimization transformational program development 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Barth 77]
    Barth, J.M.: Shifting Garbage Collection Overhead to Compile Time. CACM 20, 513–518Google Scholar
  2. [Bauer et al. 85]
    Bauer, F.L. et al.: The Munich Project CIP: The Wide-Spectrum Language CIP-L. LNCS 183, SpringerGoogle Scholar
  3. [Bloss 89]
    Bloss, A.: Update Analysis and the Efficient Implementation of Functional Aggregates. FPCA, ACM Press, 26–38Google Scholar
  4. [Didrich et al. 94]
    Didrich, K. et al.: Opal: Design and Implementation of an Algebraic Programming Language. In: Gutknecht, J. (Ed.): Programming Languages and System Architecture. LNCS 782, Springer, 228–244Google Scholar
  5. [Glaser, Thompson 87]
    Glaser, H.W., Thompson, P.: Lazy Garbage Collection. Software — Practice and Experience 17, 1–4Google Scholar
  6. [Hudak 87]
    Hudak, P.: A Semantic Model of Reference Counting and its Abstraction. In: Abramsky S., Hankin C. (Eds.): Abstract Interpretation of Declarative Languages. Elllis HorwoodGoogle Scholar
  7. [Jones, Le Métayer 89]
    Jones, S.B., Le Métayer, D.: Compile-time Garbage Collection. FPCA, ACM Press, 54–74Google Scholar
  8. [Park, Goldberg 91]
    Park, Y.G., Goldberg, B.: Reference Escape Analysis: Optimizing Reference Counting Based on the Lifetime of References. SIGPLAN Notices 26 (9), 178–189Google Scholar
  9. [Partsch 90]
    Partsch, H.A.: Specification and Transformation of Programs. SpringerGoogle Scholar
  10. [Partsch, Tuijnman 92]
    Partsch, H.A., Tuijnman, D.: Exercises in Formal Specifications and Program Development by Transformation. Tech. Report 92-33, KU NijmegenGoogle Scholar
  11. [Pepper 91]
    Pepper, P.: The Programming Language OPAL-1 — The Implementation Language. Technical Report 91-10, TU BerlinGoogle Scholar
  12. [Schulte 92]
    Schulte, W.: Effiziente und korrekte Übersetzung strikter applikativer Programmiersprachen. PhD. (In German), TU BerlinGoogle Scholar
  13. [Schulte, Grieskamp 92]
    Schulte, W., Grieskamp, W.: Generating Efficient Portable Code for a Strict Applicative Language. In: Darlington, J., Dietrich, R. (Eds.): Declarative Programming, Springer, 239–254Google Scholar
  14. [Stoye et al. 84]
    Stoye, W.R., Clarke, T.J.W., Norman, A.C.: Some Practical Methods for Rapid Combinator Reduction. Symp. on LISP and Functional Programming, ACM Press, 159–166Google Scholar
  15. [Weinstock, Wulf 88]
    Weinstock, C.B., Wulf, W.A.: Quick Fit: An Efficient Algorithm for Heap Storage Allocation. SIGPLAN Notices 23, 141–148Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1994

Authors and Affiliations

  • Wolfram Schulte
    • 1
  1. 1.Universität UlmUlmGermany

Personalised recommendations