In udata2finalize(), there is
if (issweepphase(g))
makewhite(g, o); /* "sweep" object */
It seems to me that marking "o" as white have it about to go through the "marking" step again rather than "sweeping" it. Should the comment revised?
Thanks,
Dong