Fwd: [squeak-dev] Re: The Trunk: Monticello-ar.323.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fwd: [squeak-dev] Re: The Trunk: Monticello-ar.323.mcz

Stéphane Ducasse
mc semantics

Begin forwarded message:

> From: Andreas Raab <[hidden email]>
> Date: September 30, 2009 4:53:10 PM GMT+02:00
> To: The general-purpose Squeak developers list <[hidden email]
> >
> Subject: [squeak-dev] Re: The Trunk: Monticello-ar.323.mcz
> Reply-To: The general-purpose Squeak developers list <[hidden email]
> >
>
> Miguel Enrique Cobá Martinez wrote:
>> El mié, 30-09-2009 a las 04:39 +0000, [hidden email]
>> escribió:
>>> Andreas Raab uploaded a new version of Monticello to project The  
>>> Trunk:
>>> http://source.squeak.org/trunk/Monticello-ar.323.mcz
>> Doesn't Monticello has its master repository on the wiresong site?
>
> It does, but this is an interim experiment with the only purpose of  
> trying to improve our local situation a little. Plus I have no  
> commit rights to the upstream repository. Plus I need that now ;-)
>
> There is always an interesting tension between upstream and  
> downstream usage and we haven't really found out how to  
> realistically deal with that tension in a sustained manner. If  
> anyone has ideas, I'm all ears.
>
> Cheers,
>  - Andreas
>
>>> ==================== Summary ====================
>>>
>>> Name: Monticello-ar.323
>>> Author: ar
>>> Time: 29 September 2009, 9:38:50 am
>>> UUID: 927bef84-8215-0443-afe4-c8575b3a300c
>>> Ancestors: Monticello-cwp.322
>>>
>>> A small improvement to MC loading. New rules are:
>>> - Pass 1: Load class changes first
>>> - Pass 2: Compile new / changed methods
>>> - Pass 3: Install new / changed methods
>>> - Pass 4: Remove old methods
>>> This should provide a bit more stability to the loading process.
>>>
>>> =============== Diff against Monticello-cwp.322 ===============
>>>
>>> Item was added:
>>> + ----- Method: MCMethodDefinition>>asMethodAddition (in category  
>>> 'accessing') -----
>>> + asMethodAddition
>>> + ^MethodAddition new
>>> + compile: source
>>> + classified: category
>>> + withStamp: timeStamp
>>> + notifying: (SyntaxError new category: category)
>>> + logSource: true
>>> + inClass: self actualClass.!
>>>
>>> Item was changed:
>>>  ----- Method: MCPackageLoader>>basicLoad (in category 'private')  
>>> -----
>>>  basicLoad
>>>   errorDefinitions := OrderedCollection new.
>>> + [["Pass 1: Load everything but the methods,  which are  
>>> collected in methodAdditions."
>>> + additions do: [:ea | + [ea isMethodDefinition + ifTrue:
>>> [methodAdditions add: ea asMethodAddition]
>>> + ifFalse:[ea load]]on: Error do: [errorDefinitions add: ea].
>>> + ] displayingProgress: 'Reshaping classes...'.
>>> + + "Pass 2: We compile new / changed methods"
>>> + methodAdditions do:[:ea| ea createCompiledMethod]  
>>> displayingProgress: 'Compiling...'.
>>> - [[
>>> -
>>> - "FIXME. Do a separate pass on loading class definitions as the  
>>> very first thing.
>>> - This is a workaround for a problem with the so-called 'atomic'  
>>> loading (you wish!!)
>>> - which isn't atomic at all but mixes compilation of methods with  
>>> reshapes of classes.
>>> - - Since the method is not installed until later, any class  
>>> reshape in the middle *will*
>>> - affect methods in subclasses that have been compiled before.  
>>> There is probably
>>> - a better way of dealing with this by ensuring that the sort  
>>> order of the definition lists
>>> - superclass definitions before methods for subclasses but I need  
>>> this NOW, and adding
>>> - an extra pass ensures that methods are compiled against their  
>>> new class definitions."
>>>  + "Pass 3: Install the new / changed methods
>>> + (this is a separate pass to allow compiler changes to be loaded)"
>>> + methodAdditions do:[:ea| ea installMethod] displayingProgress:  
>>> 'Installing...'.
>>> + + "Pass 4: Remove the obsolete methods"
>>> + removals do:[:ea| ea unload] displayingProgress: 'Cleaning  
>>> up ...'.
>>> + + "Try again any delayed definitions"
>>> - additions do: [:ea | self loadClassDefinition: ea]  
>>> displayingProgress: 'Loading classes...'.
>>> -
>>> - additions do: [:ea | self tryToLoad: ea] displayingProgress:  
>>> 'Compiling methods...'.
>>> - removals do: [:ea | ea unload] displayingProgress: 'Cleaning  
>>> up...'.
>>>   self shouldWarnAboutErrors ifTrue: [self warnAboutErrors].
>>> + errorDefinitions do: [:ea | ea load] displayingProgress:  
>>> 'Reloading...'.
>>> + + "Finally, notify observers for the method additions"
>>> - errorDefinitions do: [:ea | ea addMethodAdditionTo:  
>>> methodAdditions] displayingProgress: 'Reloading...'.
>>> - methodAdditions do: [:each | each installMethod].
>>>   methodAdditions do: [:each | each notifyObservers].
>>> + + additions do: [:ea | ea postloadOver: (self obsoletionFor:  
>>> ea)] displayingProgress: 'Initializing...'
>>> + ] on: InMidstOfFileinNotification do: [:n | n resume: true]
>>> + ] ensure: [self flushChangesFile]!
>>> - additions do: [:ea | ea postloadOver: (self obsoletionFor: ea)]  
>>> displayingProgress: 'Initializing...']
>>> - on: InMidstOfFileinNotification - do: [:n | n resume: true]]
>>> - ensure: [self flushChangesFile]!
>>>
>>>
>
>


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project