[gclist] Prior work?

Boehm, Hans hboehm@exch.hpl.hp.com
Wed, 9 Feb 2000 17:07:24 -0800


Object descriptors always let you disqualify some slots from consideration.
This often only helps a little with our collector, since most nonpointers
are cheaply identifiable as such.  They typically fail the first comparison.

The question is what you have to do with a valid pointer.  If the object
descriptor only implies that "this slot may be a pointer", as it does with
our collector, then you still need to go through the validity check, which
is (somewhat) expensive for those pointers that pass.  If the descriptor
implies that "this slot is either NULL or a valid pointer to the beginning
of a heap object", as would probably be the case for a hypothetical
bitmap-based implementation of SmallEiffel, then that check can be replaced
by a comparison against NULL, and you get a faster collector.

On the down side, you really have to make sure that all "pointers" really do
point to the heap.

Hans

-----Original Message-----
From: Larry Evans [mailto:cppljevans@earthlink.net]
Sent: Wednesday, February 09, 2000 1:02 PM
To: Boehm, Hans; 'Pekka P. Pirinen'; danwang@CS.Princeton.EDU
Cc: gclist@iecc.com
Subject: RE: [gclist] Prior work?


On Wed, 09 Feb 2000, Boehm, Hans wrote:
> I also remember this idea dating back to at least Algol 68 days.  My
limited
...skipping
> SmallEiffel collector doesn't need to go through the pointer validity
check
> required by the conservative collector.  I think Vincent Delacour had some
By "pointer validity check" do you mean, for example, the code in your
GC_push_one_checked in your mark.c file?  If so, then would object
descriptors
(gc_mark.h) help avoid this overhead?