One-bit Counts between Unique and Sticky Technical Report 516 July 1998

Stoye’s one-bit reference tagging scheme can be extended to local counts of two or more via two strategies. The first, suited to pure register transactions, is a cache of referents to two shared references. The analog of Deutsch’s and Bobrow’s multiple-reference table, this cache is sufficient to manage small counts across successive assignment statements. Thus, accurate reference counts above one can be tracked for short intervals, like those bridging one function’s environment to its successor’s. The second, motivated by runtime stacks that duplicate references, avoids counting any references from the stack. It requires a local pointer-inversion protocol in the mutator, but one still local to the referent and the stack frame. Thus, an accurate reference count of one can be maintained regardless of references from the recursion stack.

[1]  Paul Hudak,et al.  Variations on strictness analysis , 1986, LFP '86.

[2]  Jean-Yves Girard,et al.  Linear Logic , 1987, Theor. Comput. Sci..

[3]  Ramesh Subramonian,et al.  LogP: a practical model of parallel computation , 1996, CACM.

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

[5]  David S. Wise,et al.  Static and dynamic partitioning of pointers as links and threads , 1996, ICFP '96.

[6]  Richard Jones,et al.  Garbage collection , 1996 .

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

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

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

[10]  Jacques Cohen,et al.  Garbage Collection of Linked Data Structures , 1981, CSUR.

[11]  Norihisa Suzuki Analysis of pointer “rotation” , 1982, CACM.

[12]  Mark G. Sobell A Practical Guide to the UNIX System , 1994 .

[13]  Daniel Le Métayer,et al.  Computer-Time Garbage Collection by Sharing Analysis , 1989, FPCA.

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

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

[16]  Douglas W. Clark,et al.  A Note on Shared List Structure in LISP , 1978, Inf. Process. Lett..

[17]  Joseph Weizenbaum Symmetric list processor , 1963, CACM.

[18]  Harry R. Lewis,et al.  Data structures & their algorithms , 1991 .

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

[20]  Philip Wadler,et al.  Once upon a type , 1995, FPCA '95.

[21]  David Gries An exercise in proving parallel programs correct , 1977, CACM.

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

[23]  Alan J. Perlis,et al.  Symbol manipulation by threaded lists , 1960, Commun. ACM.

[24]  Marko C. J. D. van Eekelen,et al.  Functional Programming and Parallel Graph Rewriting , 1993 .

[25]  Paul R. Wilson,et al.  Uniprocessor Garbage Collection Techniques , 1992, IWMM.

[26]  David S. Wise,et al.  Research Demonstration of a Hardware Reference-Counting Heap , 1997, LISP Symb. Comput..