Minimizing reference count updating with deferred and anchored pointers for functional data structures

Reference counting can be an attractive form of dynamic storage management. It recovers storage promptly and (with a garbage stack instead of a free list) it can be made "real-time"—i.e., all accesses can be performed in constant time. Its major drawbacks are its inability to reclaim cycles, its count storage, and its count update overhead. Update overhead is especially irritating for functional (read-only) data where updates may dirty pristine cache lines and pages.

[1]  Takashi Chikayama,et al.  Multiple Reference Management in Flat GHC , 1987, International Conference on Logic Programming.

[2]  Jeffrey M. Barth Shifting garbage collection overhead to compile time , 1977, CACM.

[3]  Henry G. Baker,et al.  CONS should not CONS its arguments, part II: Cheney on the M.T.A. , 1995, SIGP.

[4]  Richard B. Kieburtz,et al.  Programming without pointer variables , 1976, Conference on Data: Abstraction, Definition and Structure.

[5]  George E. Collins,et al.  A method for overlapping and erasure of lists , 1960, CACM.

[6]  Richard P. Gabriel,et al.  Performance and evaluation of Lisp systems , 1985 .

[7]  Daniel R. Edelson Smart Pointers: They're Smart, But They're Not Pointers , 1992, C++ Conference.

[8]  Henry G. Baker Safe and leakproof resource management using Ada83 limited types , 1993, ALET.

[9]  Benjamin Goldberg,et al.  Reference escape analysis: optimizing reference counting based on the lifetime of references , 1991, PEPM '91.

[10]  Kelvin D. Nilsen,et al.  Garbage collection of strings and linked data structures in real time , 1988, Softw. Pract. Exp..

[11]  G BakerHenry CONS should not CONS its arguments, part II , 1995 .

[12]  H. Gelernter,et al.  A FORTRAN-compiled list-processing language , 1959, ACM '59.

[13]  Daniel G. Bobrow,et al.  An efficient, incremental, automatic garbage collector , 1976, CACM.

[14]  Colin Runciman,et al.  Linearity and Laziness , 1991, FPCA.

[15]  Philip Wadler,et al.  Is there a use for linear logic? , 1991, PEPM '91.

[16]  Amer Diwan,et al.  Compiler support for garbage collection in a statically typed language , 1992, PLDI '92.

[17]  Carl A. Gunter,et al.  Proving memory management invariants for a language based on linear logic , 1992, LFP '92.

[18]  Yves Lafont,et al.  The Linear Abstract Machine , 1988, Theor. Comput. Sci..

[19]  Patrick Lincoln,et al.  Linear logic , 1992, SIGA.

[20]  Hans-J Boehm Simple Gc-safe Compilation , 1991 .

[21]  David S. Wise Stop-and-Copy and One-Bit Reference Counting , 1993, Inf. Process. Lett..

[22]  Henry G. Baker,et al.  CONS should not CONS its arguments, or, a lazy alloc is a smart alloc , 1992, SIGP.

[23]  Daniel P. Friedman,et al.  Aspects of Applicative Programming for Parallel Processing , 1978, IEEE Transactions on Computers.

[24]  R. Jakobson On Language , 1990 .

[25]  Gérard Berry,et al.  The chemical abstract machine , 1989, POPL '90.

[26]  Henry G. Baker,et al.  The Boyer Benchmark at warp speed , 1992 .

[27]  Jr. Guy L. Steele,et al.  Common LISP: the language (2nd ed.) , 1990 .

[28]  A. C. Norman,et al.  Some practical methods for rapid combinator reduction , 1984, LFP '84.

[29]  Robert E. Strom Mechanisms for compile-time enforcement of security , 1983, POPL '83.

[30]  Henry G. Baker,et al.  Lively linear Lisp: “look ma, no garbage!” , 1992, SIGP.

[31]  Guy Durrieu,et al.  Mechanisms for efficient multiprocessor combinator reduction , 1986, LFP '86.

[32]  Henry G. Baker,et al.  Equal rights for functional objects or, the more things change, the more they are the same , 1993, OOPS.

[33]  Samson Abramsky,et al.  Computational Interpretations of Linear Logic , 1993, Theor. Comput. Sci..

[34]  L. Peter Deutsch,et al.  ByteLisp and its Alto implementation , 1980, LISP Conference.

[35]  Guy L. Steele,et al.  Fast arithmetic in MacLISP , 1977 .

[36]  Daniel R. Edelson Precompiling C++ for Garbage Collection , 1992, IWMM.

[37]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[38]  Yu Inamura,et al.  Optimizing Techniques Using the MRB and Their Evaluation on the Multi-PSI/V2 , 1989, NACLP.

[39]  Taiichi Yuasa Design and implementation of Kyoto Common Lisp , 1991 .

[40]  Benjamin Goldberg Generational reference counting: a reduced-communication distributed storage reclamation scheme , 1989, PLDI '89.

[41]  Daniel P. Friedman,et al.  The one-bit reference count , 1977 .

[42]  Kenji Nishida,et al.  Evaluation of MRB Garbage Collection on Parallel Logic Programming Architectures , 1990, ICLP.

[43]  Henry G. Baker,et al.  The treadmill: real-time garbage collection without motion sickness , 1992, SIGP.