Fix unlikely but possible race in `WeakValueDictionary`
It may happen that value in `valueArray` could have been already
collected by the GC but #clearDeadSlots have not yet been called.
When this happened, `#at:ifAbsentPut:` returned tombstone rather
than updating the dictionary with value from block.
This commit fixes this by checking whether `valueArray` contain
the tombstone and if so, clearing up the dead slots and restarting
the operation. HTH.
This directory contains (what we consider) fundamental
classes required for any serious Smalltalk application
(both headless and GUI-based).
Of course, for special applications, even this set of
classes could be reduced
(for smaller apps, some of LargeInteger, Float, Fraction
etc. could be left out).
We do not provide tools or support for such minimal
configurations - with modern, paged OperatingSystems, there
is also less sense in doing so, since unused code is simply
paged out or never paged in at all.