from preamble:
"Change Set: WeakGCFix-wbk Date: 21 March 2004 Author: Bryce Kampjes
Weak references can leave dangling pointers if the weak object is in old space and it points to a new space object. The problem occurs when the new space object is incrementally collected but the old space weak object remains. The weak object now has a dangling pointer to where the new space object was.
This change set adds a little code to ObjectMemory>>sweepPhase so that it will finalise any weak rootTable objects.
There is still the chance that an interpreter variable may contain a pointer to a weak object. However interpreter variables have very specific uses. I'm not sure if they should be checked for weak references.
"!