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 #*weak*Subclass: ... message:
>
> OrderedCollection *weak*Subclass: #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

Reply via email to