[gclist] Terminology question, "deferred reference counting"
Henry G. Baker
hbaker@netcom.com
Thu, 2 May 1996 08:36:05 -0700 (PDT)
> This came up once before, but I managed to delete/forget the exact
> conclusions. There's two modifications to reference counting that
> I (recall, probably in error) seeing called "deferred reference counting".
>
> 1. Don't adjust the reference count for updates arising from local-variable
> operations, as long as it can be inferred that the RC is positive
> when it should be positive.
>
> 2. When freeing objects, instead of recursively decrementing and
> freeing an entire data structure, queue/stack those objects with
> reference count of zero and process the queue incrementally.
>
> I suppose I could go dig up the Deutsch and Bobrow paper (I'm
> pretty sure that I have a copy) but I think that both techniques
> are mentioned in the same paper. Which of these is called "deferred
> reference counting", and what's the other one called?
I didn't really give the Weizenbaum trick (#2, above) a name when I
referenced it in my RTGC (CACM 1978) paper, but I guess I would now
call this 'lazy' reference counting, since the reclaiming of the freed
space is put off, rather than being done promptly.
The Deutsch/Bobrow scheme (#1, above) of not bothering to count stack
references, and to then scan the stack, I would now call a
'combination' scheme in which the stack was _traced_, while the heap
was garbage-collected. (Although probably independently developed,
Peter Bishop's memo & thesis also suggests such a thing, if I recall
correctly.) I have also used an even more difficult-to-categorize
scheme in which the stack roots themselves are linked & unlinked using
C++ ctors/dtors, but this chain is then scanned by a tracer.
--
Henry Baker
www/ftp directory:
ftp.netcom.com:/pub/hb/hbaker/home.html