Hi,
I uploaded a new version of the Collections package to the Inbox (Collections-ul.295) for reviewing. If contains the following changes: WeakSet: - new grow strategy implemented via #growSize (it can actually shrink if too many elements are garbageCollected) - semantic change: #slowSize doesn't change (decrease) the value of tally so it doesn't supress growing - #fixCollisionsFrom: recycles free slots WeakKeyDictionary: - new finalization strategy: push model instead of pull (via finalizer) - new instance variable named finalizer. If it's value is not nil, then it will be evaluated with the finalized associations' value - #fixCollisionsFrom: finalizes values and recycles free slots, instead of rehashing (this boosts performance) - new method: #slowSize which counts only those associations which have a not nil key - new grow stategy (same as WeakSet's) - #finalizeValues: is deprecated - #noCheckNoGrowFillFrom: (used by #grow and #rehash) finalizes values via finalizer if it's not nil - cosmetic changes WeakRegistry: - new instance variable named objectsToFinalize, it's value is nil or an OrderedCollection which collects the executors of garbage collected objects. Access to objectsToFinalize always protected. - new finalization strategy uses the finalizing capability of WeakKeyDictionary. WeakRegistry adds a finalizer block to its WeakKeyDictionary which adds the received object to objectsToFinalize - #finalizeValues, #remove:ifAbsent: simplified - #finalizeValues has O(size) runtime worst case - cosmetic changes +a postscript for installing the finalizer blocks Passes all tests in WeakRegistryTest. It can be loaded to clean Trunk images (tested in 8972), but it has to be splitted (or tweaked) if we decide to add these to the trunk. Also further minor changes are on the way. Cheers, Levente |
Levente Uzonyi wrote:
> I uploaded a new version of the Collections package to the Inbox > (Collections-ul.295) for reviewing. Looks good to me. The one thing I'm wondering about is whether WeakKeyDictionary shouldn't initialize its finalizer by default to something like [:item| item finalize]? Cheers, - Andreas > If contains the following changes: > > WeakSet: > - new grow strategy implemented via #growSize (it can actually shrink if > too many elements are garbageCollected) > - semantic change: #slowSize doesn't change (decrease) the value of tally > so it doesn't supress growing > - #fixCollisionsFrom: recycles free slots > > WeakKeyDictionary: > - new finalization strategy: push model instead of pull (via finalizer) > - new instance variable named finalizer. If it's value is not nil, then it > will be evaluated with the finalized associations' value > - #fixCollisionsFrom: finalizes values and recycles free slots, instead of > rehashing (this boosts performance) > - new method: #slowSize which counts only those associations which have a > not nil key > - new grow stategy (same as WeakSet's) > - #finalizeValues: is deprecated > - #noCheckNoGrowFillFrom: (used by #grow and #rehash) finalizes values via > finalizer if it's not nil > - cosmetic changes > > WeakRegistry: > - new instance variable named objectsToFinalize, it's value is nil or > an OrderedCollection which collects the executors of garbage collected > objects. Access to objectsToFinalize always protected. > - new finalization strategy uses the finalizing capability of > WeakKeyDictionary. WeakRegistry adds a finalizer block to its > WeakKeyDictionary which adds the received object to objectsToFinalize > - #finalizeValues, #remove:ifAbsent: simplified > - #finalizeValues has O(size) runtime worst case > - cosmetic changes > > +a postscript for installing the finalizer blocks > > Passes all tests in WeakRegistryTest. > > > It can be loaded to clean Trunk images (tested in 8972), but it has to > be splitted (or tweaked) if we decide to add these to the trunk. Also > further minor changes are on the way. > > > Cheers, > Levente > > |
On Wed, 3 Feb 2010, Andreas Raab wrote:
> Levente Uzonyi wrote: >> I uploaded a new version of the Collections package to the Inbox >> (Collections-ul.295) for reviewing. > > Looks good to me. The one thing I'm wondering about is whether > WeakKeyDictionary shouldn't initialize its finalizer by default to something > like [:item| item finalize]? I preserved the original behavior and I think it's correct, because you don't know what the dictionary will be used for. Levente > > Cheers, > - Andreas > >> If contains the following changes: >> >> WeakSet: >> - new grow strategy implemented via #growSize (it can actually shrink if >> too many elements are garbageCollected) >> - semantic change: #slowSize doesn't change (decrease) the value of tally >> so it doesn't supress growing >> - #fixCollisionsFrom: recycles free slots >> >> WeakKeyDictionary: >> - new finalization strategy: push model instead of pull (via finalizer) >> - new instance variable named finalizer. If it's value is not nil, then it >> will be evaluated with the finalized associations' value >> - #fixCollisionsFrom: finalizes values and recycles free slots, instead of >> rehashing (this boosts performance) >> - new method: #slowSize which counts only those associations which have a >> not nil key >> - new grow stategy (same as WeakSet's) >> - #finalizeValues: is deprecated >> - #noCheckNoGrowFillFrom: (used by #grow and #rehash) finalizes values via >> finalizer if it's not nil >> - cosmetic changes >> >> WeakRegistry: >> - new instance variable named objectsToFinalize, it's value is nil or >> an OrderedCollection which collects the executors of garbage collected >> objects. Access to objectsToFinalize always protected. >> - new finalization strategy uses the finalizing capability of >> WeakKeyDictionary. WeakRegistry adds a finalizer block to its >> WeakKeyDictionary which adds the received object to objectsToFinalize >> - #finalizeValues, #remove:ifAbsent: simplified >> - #finalizeValues has O(size) runtime worst case >> - cosmetic changes >> >> +a postscript for installing the finalizer blocks >> >> Passes all tests in WeakRegistryTest. >> >> >> It can be loaded to clean Trunk images (tested in 8972), but it has to be >> splitted (or tweaked) if we decide to add these to the trunk. Also further >> minor changes are on the way. >> >> >> Cheers, >> Levente >> >> > > > |
Free forum by Nabble | Edit this page |