[gclist] Fast-allocating non-copying GC's

Paul R. Wilson wilson@cs.utexas.edu
Mon, 18 Mar 1996 22:40:09 -0600


>From bobduff@world.std.com Mon Mar 18 19:11:54 1996
>To: gclist@iecc.com
>Cc: gclist@iecc.com, wilson@cs.utexas.edu
>Subject: Re: [gclist] Fast-allocating non-copying GC's
>
>> Our collector also support precise scanning of objects on the heap,
>> WITHOUT modifying the compiler.  We have a tool that extracts debug
>> output from object files and uses it to construct type descriptor records.
>
>Possibly a good plan, but beware Ada features that don't quite fit the
>standard debugging formats.

Could you tell me basically what these things are?

C++ has oddities too, which require a little tweaking for a given
compiler.  (E.g., knowing how to identify a field name as a vtbl pointer.)
There's acually very little tweaking, though;  it's surprisingly easy.

>  Check with ACT as to how these are handled.

Umm... what's ACT.  (Pardon my extreme ignorance when it comes to Ada.)

>Gdb has been modified to handle Ada programs OK, sort of, but it doesn't
>fully understand Ada yet.

Do you know what's missing?

>By the way, such a tool seems more generally useful: I'd like to have a
>handy subroutine that walks all the components of an object, calling a
>client-specified operation at each point.  Does that make sense?
>(Of course, some languages can do that as a matter of course.)

Yes, this is doable.  We haven't done it, but it should be easy.
We want something like that for Schema evolution in our persistent
store, but haven't gotten around to it.

(BTW, anybody who wants to use our p-store with Ada is also welcome to
do that.  It uses the same type descriptor system to decode object
layouts so that it can swizzle pointers.)

>But the same effects at the cache level are probably more important for
>most programs.  (Most of my programs *never* page.  Or hardly ever.  And
>if/when they do, they're thrashing, so something needs to be fixed.  But
>I'm sure they reload cache lines quite a bit.)

I think the same arguments apply at the cache level, though perhaps not
quite as strongly.