I have the feeling that extending the signature of all Parrot-functions will remove the need of walking the C-Stack entirely. If this will be the linked list of frames or the generation count is more or less a matter of taste: The generation count forces some intermediate DOD-runs, whereas the linked list of stack frames makes the creation of temporaries a little bit more complicated.
I'm still not convinced that any of the non-stackwalking alternatives are really worth it. Stackwalking as a higher per-run cost (as stack elements are more expensive to evaluate) and potential portability issues (as we can't guarantee stacks on a platform, and may have fun getting register contents) but has the advantage of having no per-allocation anchoring expense and reducing the number of places in the source that have to be specially designed to not die too soon.
We have a solution, and it works. The garbage collector certainly has things that can be done to it, but at this point we'd be better served by work on a generational collector, or teaching the dead sweep to build a tree of dead objects for ordered destruction.
--
Dan
--------------------------------------"it's like this"------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk