How can we test and make sure that in the future we know automatically if the weak is broken?
Stef On Aug 3, 2011, at 1:01 PM, Nicolas Cellier wrote: > 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 >> >> >
