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 > >
