On 3 August 2011 22:27, Stéphane Ducasse <[email protected]> wrote: > How can we test and make sure that in the future we know automatically if the > weak is broken? >
object := Object new. coll := WeakOrderedCollection new add: anObject. anObject := nil. Smalltalk garbageCollect. self assert: coll removeLast isNil :) > 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 >>> >>> >> > > > -- Best regards, Igor Stasenko AKA sig.
