Juergen Boemmels wrote: > > Benjamin Goldberg <[EMAIL PROTECTED]> writes: [snip] > > Except that generational_dod_helper is much simpler and faster -- it > > doesn't mark anything as alive or free, it only adjusts the generation > > of those pmcs that were created in C functions which we have since > > returned from. > > Its still one full sweep.
Did you read my other message in this thread? It could/should be much simpler: only a sweep of the stack of newly allocated pmcs; and since the stack only grows at one end, it's *only* those newly allocated pmcs whose depths are greater than our current depth. > > The generation count doesn't *force* intermediate DOD-runs... or at > > least, not a *full* DOD, anyway. > > But it needs intermediate sweeps. But with the generation-number kept seperate from the pmc in a stack, these intermediate sweeps can be very fast. -- $a=24;split//,240513;s/\B/ => /for@@=qw(ac ab bc ba cb ca );{push(@b,$a),($a-=6)^=1 for 2..$a/6x--$|;print "[EMAIL PROTECTED] ]\n";((6<=($a-=6))?$a+=$_[$a%6]-$a%6:($a=pop @b))&&redo;}