[squeak-dev] The Trunk: Collections-cmm.466.mcz

Chris Muller asqueaker at gmail.com
Mon Dec 26 20:14:51 UTC 2011


> Why is #arrayType on the class side?

I must admit I wrung my hands about this decision -- the answer is
"consistency" with OrderedCollection, which needs its #arrayType on
the class side for the case where the user wants to pre-allocate extra
slots.  In that case, the initial 'array' is allocated in the
class-side constructor (see OrderedCollection class>>#new:).

However, HashedCollection doesn't do it that way, so it probably
_could_ have gone on the instance-side.  Still, I thought there was no
harm in being consistent with OC.

> What are the practical alternatives of
> Array as #arrayType?

To have a compactable Array class.  WbArray is a subclass of Array
included with Magma that can, therefore, be used with the
WriteBarrier.  WbOrderedCollection, WbSet and WbDictionary follow by
simply overriding their #arrayType which, in at least the app I'm
measuring, affords a 20X improvement in application performance.

 - Chris



More information about the Squeak-dev mailing list