[squeak-dev] The Trunk: Monticello-bf.504.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Thu Apr 19 17:36:40 UTC 2012


Ah thanks, very useful.
I noticed the bug, suspected the origin but didn't had time to correct.

Nicolas

Le 19 avril 2012 18:36,  <commits at source.squeak.org> a écrit :
> Bert Freudenberg uploaded a new version of Monticello to project The Trunk:
> http://source.squeak.org/trunk/Monticello-bf.504.mcz
>
> ==================== Summary ====================
>
> Name: Monticello-bf.504
> Author: bf
> Time: 19 April 2012, 9:36:55.211 am
> UUID: 5fa1177d-b1ed-4cf0-8628-229f171ca814
> Ancestors: Monticello-eem.503
>
> Fix intermittant load problem. We sometimes would get a 'changes file not found' in the middle of updating, but retrying found it just fine. I finally tracked it down to too many files being open. This change re-uses the same read-only copy during a package load (which additionally might speed up loading a tiny bit).
>
> =============== Diff against Monticello-eem.503 ===============
>
> Item was changed:
>  ----- Method: MCPackageLoader>>basicLoad (in category 'private') -----
>  basicLoad
>        "Load the contents of some package. This is the core loading method
>        in Monticello. Be wary about modifying it unless you understand the details
>        and dependencies of the various entities being modified."
>        | pkgName |
>        errorDefinitions := OrderedCollection new.
>        "Obviously this isn't the package name but we don't have anything else
>        to use here. ChangeSet current name will generally work since a CS is
>        usually installed prior to installation."
>        pkgName := ChangeSet current name.
>
> +       [CurrentReadOnlySourceFiles cacheDuring: [[
> +       "Pass 1: Load everything but the methods,  which are collected in methodAdditions."
> -       [["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 ', pkgName.
>
>        "Try again any delayed definitions"
>        self shouldWarnAboutErrors ifTrue: [self warnAboutErrors].
>        errorDefinitions do: [:ea | ea load]
>                displayingProgress: 'Reloading ', pkgName.
>
>        "Pass 2: We compile new / changed methods"
>        methodAdditions do:[:ea| ea createCompiledMethod]
>                displayingProgress: 'Compiling ', pkgName.
>
>        'Installing ', pkgName displayProgressFrom: 0 to: 2 during:[:bar|
>                "There is no progress *during* installation since a progress bar update
>                will redraw the world and potentially call methods that we're just trying to install."
>                bar value: 1.
>
>                "Pass 3: Install the new / changed methods
>                (this is a separate pass to allow compiler changes to be loaded)"
>                methodAdditions do:[:ea| ea installMethod].
>
>                "Pass 4: Remove the obsolete methods"
>                removals do:[:ea| ea unload].
>        ].
>
>        "Finally, notify observers for the method additions"
>        methodAdditions do: [:each | each notifyObservers]
>                "the message is fake but actually telling people how much time we spend
>                in the notifications is embarrassing so lie instead"
>                displayingProgress: 'Installing ', pkgName.
>
>        additions do: [:ea | ea postloadOver: (self obsoletionFor: ea)]
>                displayingProgress: 'Initializing ', pkgName.
>
>        ] on: InMidstOfFileinNotification do: [:n | n resume: true]
> +       ]] ensure: [self flushChangesFile]!
> -       ] ensure: [self flushChangesFile]!
>
>


More information about the Squeak-dev mailing list