Thanks 
I will have a look tomorrow morning, before packing to get back in the deep 
north (of France henrik).

On Aug 3, 2011, at 2:45 PM, Mariano Martinez Peck wrote:

> Ok, I have splitted the slice in two parts: PART1 and PART2. PART1 includes 
> the fixes in #makeRoomAtFirst and #makeRoomAtLast and a new class 
> WeakOrderedCollectionTest  with two tests: 
> #testWeakOrderedCollectionSomeGarbageCollected and 
> #testWeakOrderedCollectionAllGarbageCollected.
> 
> Those tests can be improved a lot and make them look like those in 
> WeakSetTest where each collection operation is tested. I don't have the 
> time/knowledge to do that right now, but if someone can, excellent.
> 
> The second part is just the revome of OrderedCollection >> grow.
> 
> 
> Name: 
> SLICE-Issue-4596-WeakOrderedColllection-array-is-replaced-by-an-Array-instead-of-a-WeakArray-PART1-MarianoMartinezPeck.1
> Author: MarianoMartinezPeck
> Time: 3 August 2011, 2:40:10 pm
> UUID: 35f20200-98ef-581f-1100-000044ef581f
> Ancestors: 
> Dependencies: CollectionsTests-MarianoMartinezPeck.529, 
> Collections-Sequenceable-MarianoMartinezPeck.97
> 
> This is the first part. It includes the fix and 2 tests.
> 
> 
> 
> 
> Name: 
> SLICE-Issue-4596-WeakOrderedColllection-array-is-replaced-by-an-Array-instead-of-a-WeakArray-PART2-MarianoMartinezPeck.1
> Author: MarianoMartinezPeck
> Time: 3 August 2011, 2:41:42 pm
> UUID: caf00200-1007-401f-18ec-0e0008e05c1f
> Ancestors: 
> Dependencies: Collections-Sequenceable-MarianoMartinezPeck.98
> 
> It just removes OrderedCollection >> grow
> 
> 
> 
> On Wed, Aug 3, 2011 at 2:11 PM, Mariano Martinez Peck <[email protected]> 
> wrote:
> Thanks a lot Nicolas and Henrik.  I have split the slice and it works!
> I will upload soon both slides, part1 and part2 and a test for it. 
> 
> On Wed, Aug 3, 2011 at 1:49 PM, Nicolas Cellier 
> <[email protected]> wrote:
> Oh I see, for the SLICE, this is again the Pharo's version of
> MCPackageLoader>>basicLoad which is striking.
> In Squeak trunk it would work because removals are performed AFTER
> methodAdditions/Changes.
> In Pharo, removals are performed BEFORE, so yes, the SLICE needs to be
> split in two parts...
> Or you can just manually merge it (apply the removal after...).
> 
> I'm eager to see a true atomic load with a single massive becomeForward: :)
> IMHO, this should be coupled with lazy initializations mechanism as I
> proposed once (based on pragmas).
> 
> Now if you simply modify grow from within a browser, I see no obvious
> reason why it would fail...
> 
> Nicolas
> 
> 2011/8/3 Mariano Martinez Peck <[email protected]>:
> >
> >
> > On Wed, Aug 3, 2011 at 1:01 PM, Nicolas Cellier
> > <[email protected]> wrote:
> >>
> >> You replace Array with self arrayType, that's all.
> >
> > Here my images freezes and CPU goes 100%. I guess because compiling/saving a
> > method uses OrderedCollection grow at the same time.
> >
> >>
> >> But there is better, Pharo already has growAtFirst and growAtLast
> >> which are correct.
> >> Use them instead of grow.
> >> See SLICE in inbox.
> >
> > I cannot load it since it freezes in "Cleaning Up". It can be the same
> > reason as why I cannot save the modification.
> > I am in Pharo1.3
> > Latest update: #13277
> >
> > Thanks a lot for the help!
> >
> >>
> >> 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
> >> >
> >> >
> >>
> >
> >
> >
> > --
> > Mariano
> > http://marianopeck.wordpress.com
> >
> >
> 
> 
> 
> 
> -- 
> Mariano
> http://marianopeck.wordpress.com
> 
> 
> 
> 
> -- 
> Mariano
> http://marianopeck.wordpress.com
> 


Reply via email to