On Tue, 2 Sep 2003, Leopold Toetsch wrote:
> Dan Sugalski <[EMAIL PROTECTED]> wrote:
>
> > Doing the walk is *also* easy. You clear the next PMC pointer, just as
> > with a normal DOD run setup. call the DOD mark on the inital PMC
>
> there is no mark() for a plain PMC scalar (and no next pointer inside
> the PMC). If the PMC has a mark routine this calls pobject_lives()
> (setting the live flag) and puts complex PMCs but *not all* on the next
> for GC pointer. Some get their live flag directly set.
Every PMC should have a next_for_GC pointer. You moved it to the ext
structure, but it's there, and they all ought to have one. Any PMC that
gets frozen *will* have one, as it needs to have it for traversal to work
properly.
> Using the DOD functionality doesn't match freeze, thaw, dump at all and
> interferes with DOD runs.
Oh, nonsense, it doesn't at all interfere with things. I designed it with
this as one of the applications for the DOD system. It should also work
reasonably well for destruction ordering. If it's been changed in a way
that makes this untenable, it needs to be fixed so it does.
Dan