Correct freelist update code.

At least, this looks righter, and removes comparing two things that
are potentially unrelated memory addresses.
Remove unsafe gen2 sweep.

Nice try, but if we only nursery marked, it doesn't matter the thread
is going away, we still can't go assuming its gen2 objects are dead.
If it just so happens we already were doing a gen2 run then we'll get
the optimization out of existing code anyway.