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

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

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

commits-2
Andreas Raab uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-ar.323.mcz

==================== 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]!


Reply | Threaded
Open this post in threaded view
|

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

Miguel Cobá
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?

>
> ==================== 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]!
>
>
--
Miguel Cobá
http://miguel.leugim.com.mx


Reply | Threaded
Open this post in threaded view
|

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

Andreas.Raab
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]!
>>
>>


Reply | Threaded
Open this post in threaded view
|

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

Colin Putney
In reply to this post by Miguel Cobá

On 30-Sep-09, at 7:31 AM, 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?

Not really.

A lot of the historical versions of Monticello are available there,  
but these days lots of people have customized versions floating  
around. There's quite a few versions on SqueakSource, for example. The  
trunk is the right place for the version that ships with Squeak.

Colin