[gclist] gc interface

boehm.PARC@xerox.com boehm.PARC@xerox.com
Tue, 2 Apr 1996 11:08:29 PST


Geert Bosch wrote:

"Both of these statements might be a little too strong. With
just a few limitations it is possible to make a simple framework
in which arbitrary garbage-collecting allocators can be
integrated. For the allocator that I wrote for Ada-95 I used
the following structure: ..."

Could you clarify how you handle cycles between storage pools?  Can you
guarantee mark time linear in the size of the heap?  It seems to me that it's
hard to avoid traversing the reference counted storage pool repeatedly, unless
you also maintain mark bits for reference counted objects.

Minor point:
It sounds like you need to access the global pool's type tags every time you
mark an object, and the tags are at a fixed offset within a page.  That's
likely to significantly increase the number of cache misses, since all the tags
end up contending for a very small number of cache lines.  That seems to be a
fairly common mistake in allocator design.  (I think I can claim we were among
the first to make this mistake.)

Hans