You replace Array with self arrayType, that's all. But there is better, Pharo already has growAtFirst and growAtLast which are correct. Use them instead of grow. See SLICE in inbox.
Nicolas 2011/8/3 Mariano Martinez Peck <[email protected]>: > btw...how can I change OrderedCollection>>grow > without shooting my foots? > > On Wed, Aug 3, 2011 at 12:51 PM, Mariano Martinez Peck > <[email protected]> wrote: >> >> >> On Wed, Aug 3, 2011 at 12:42 PM, Nicolas Cellier >> <[email protected]> wrote: >>> >>> I'm pretty sure the array inst var of your WeakOrderedColleciton is no >>> more a WeakArray but a simple Array. >> >> Yes, indeed, it is a normal Array and that cought my attention. But since >> I have no idea about Weak stuff...I also noticed that WeakOrderedCollection >> is declared as: >> >> OrderedCollection subclass: #WeakOrderedCollection >> instanceVariableNames: '' >> classVariableNames: '' >> poolDictionaries: '' >> category: 'Collections-Weak' >> >> instead of using the #weakSubclass: ... message: >> >> OrderedCollection weakSubclass: #WeakOrderedCollection >> instanceVariableNames: '' >> classVariableNames: '' >> poolDictionaries: '' >> category: 'Collections-Weak' >> >> >>> >>> This is because Pharo's WeakOrderedCollection is broken... >>> >> >> Do you know a weak collection that is not broken in Pharo and let me do a >> addLast: ? >> >>> >>> Every reference to Array from within OrderedCollection should be >>> replaced with message send (self arrayType). >>> See for example, OrderedCollection>>#grow >>> >> >> Thanks. I will check how many there are and try to fix them. >> >>> >>> Nicolas >>> >>> 2011/8/3 Mariano Martinez Peck <[email protected]>: >>> > Hi guys. I am since yesterday trying to find something and I cannot. So >>> > at >>> > this point I need external eyes :) >>> > I have this little code: >>> > >>> > anObject := ClassWith2Var new. >>> > sharedObject := ClassWith1Var new. >>> > sharedObject var1: 'nose'. >>> > anObject var1: Date today. >>> > anObject var2: sharedObject. >>> > >>> > serializedObjects := FuelMareaSerializer new >>> > serializeAndWriteObject: >>> > anObject to: 'aFileName'. >>> > anObject := nil. >>> > sharedObject := nil. >>> > >>> > 3 timesRepeat: [Smalltalk garbageCollect]. >>> > serializedObjects inspect. >>> > >>> > >>> > >>> > What is important here is that FuelMareaSerializer new >>> > serializeAndWriteObject: anObject to: 'aFileName' answers a >>> > WeakOrderedCollection with each object of the serialized graph (taking >>> > anObject as the root) >>> > Now, if I print the tempVar serializedObjects I see: >>> > >>> > a WeakOrderedCollection(ClassWith1Var ClassWith2Var Date DateAndTime >>> > Duration a ClassWith1Var a ClassWith2Var 3 August 2011 >>> > 2011-08-03T00:00:00+02:00 0:02:00:00 1:00:00:00 86400 2455777 'nose' 0 >>> > 7200) >>> > >>> > WHYYYY?? why are all there if I put a nil to both, anObject and >>> > sharedObejct. This WeakOrderedCollection should be with all nils >>> > (except >>> > classes). Why are not being garbage collected? >>> > >>> > If I explore, for example the tempVar sharedObejct, which is at >>> > serializedObjects at: 6 and then I put explore pointers I ONLY see >>> > the >>> > array of the WeakOrderedCollection pointing to it. I don't understand. >>> > >>> > Any help is really appreaciated. >>> > >>> > -- >>> > Mariano >>> > http://marianopeck.wordpress.com >>> > >>> > >>> >> >> >> >> -- >> Mariano >> http://marianopeck.wordpress.com >> > > > > -- > Mariano > http://marianopeck.wordpress.com > >
