[Pkg] The Trunk: Monticello-ar.334.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Dec 10 08:43:35 UTC 2009
Andreas Raab uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-ar.334.mcz
==================== Summary ====================
Name: Monticello-ar.334
Author: ar
Time: 10 December 2009, 12:42:59 pm
UUID: 4a73ef6b-47d1-9b44-b744-e5b9e3071518
Ancestors: Monticello-ar.333
A little white lie: When loading sizable packages, most of the time can be spent in notifying the observers. Tell the users that we're still installing because it's embarrassing to let them know that we're wasting our time in notifications.
=============== Diff against Monticello-ar.333 ===============
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...'.
'Installing...' displayProgressAt: Sensor cursorPoint from: 0 to: 2 during:[:bar|
"There is 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].
].
"Try again any delayed definitions"
self shouldWarnAboutErrors ifTrue: [self warnAboutErrors].
errorDefinitions do: [:ea | ea load] displayingProgress: 'Reloading...'.
"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...'.
- 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]!
More information about the Packages
mailing list