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