• Tim Peters's avatar
    OK, I couldn't stand it <0.5 wink>: removed all uncertainty about what's · 19b74c78
    Tim Peters authored
    in gc_refs, even at the cost of putting back a test+branch in
    visit_decref.
    
    The good news:  since gc_refs became utterly tame then, it became
    clear that another special value could be useful.  The move_roots() and
    move_root_reachable() passes have now been replaced by a single
    move_unreachable() pass.  Besides saving a pass over the generation, this
    has a better effect:  most of the time everything turns out to be
    reachable, so we were breaking the generation list apart and moving it
    into into the reachable list, one element at a time.  Now the reachable
    stuff stays in the generation list, and the unreachable stuff is moved
    instead.  This isn't quite as good as it sounds, since sometimes we
    guess wrongly that a thing is unreachable, and have to move it back again.
    
    Still, overall, it yields a significant (but not dramatic) boost in
    collection speed.
    19b74c78
gcmodule.c 27.1 KB