On Fri, Jul 27, 2012 at 9:18 PM, Esteban Lorenzano <[email protected]> wrote:
> 20236
> -----
>
> Issue 6467: Remove SystemChangeNotifier 2 - All events using
> SystemAnnouncer
> http://code.google.com/p/pharo/issues/detail?id=6467
>
> the beast is not dead yet... but almost :)
>
Hi Esteban,
the shrinking to the Pharo Kernel now fails with this error:
PharoKernel shrinking report
Error:
MessageNotUnderstood: receiver of "isRemoved" is nil
441 [:e |
| rep |
rep := FileStream forceNewFileNamed: 'PharoDebug.log'.
rep nextPutAll: 'PharoKernel shrinking report';
cr.
rep nextPutAll: 'Error:';
cr.
rep nextPutAll: e asString;
cr.
rep nextPutAll: thisContext stack size asString.
thisContext stack copy
withIndexDo: [:stck :i | [rep nextPutAll: i asString;
space;
nextPutAll: stck asString;
cr]
ifError: []].
rep close.
Smalltalk exitFailure] in SmalltalkImage>>privShrinkingProcess
2 BlockClosure>>cull:
3 BlockClosure>>cull:cull:
4 [:ex | errorHandlerBlock cull: ex description cull: ex receiver] in
BlockClosure>>ifError:
5 BlockClosure>>cull:
6 [(self tempAt: 2)
cull: exception] in MethodContext(ContextPart)>>handleSignal:
7 BlockClosure>>ensure:
8 MethodContext(ContextPart)>>handleSignal:
9 MethodContext(ContextPart)>>handleSignal:
10 MessageNotUnderstood(Exception)>>signal
11 UndefinedObject(Object)>>doesNotUnderstand: #isRemoved
12 ChangesLog>>logEvent:
13 ChangesLog>>logAnnouncement:
14 MessageSend>>value:
15 MessageSend>>cull:
16 MessageSend>>cull:cull:
17 [action cull: anAnnouncement cull: announcer] in
AnnouncementSubscription>>deliver:
18 BlockClosure>>on:do:
19 BlockClosure>>on:fork:
20 AnnouncementSubscription>>deliver:
21 [subscription deliver: anAnnouncement] in
SubscriptionRegistry>>deliver:to:startingAt:
22 BlockClosure>>ifCurtailed:
23 SubscriptionRegistry>>deliver:to:startingAt:
24 SubscriptionRegistry>>deliver:to:
25 SubscriptionRegistry>>deliver:
26 SystemAnnouncer(Announcer)>>announce:
27 SystemAnnouncer>>basicAnnounce:
28 SystemAnnouncer>>announce:
29 SystemAnnouncer>>trigger:
30 SystemAnnouncer>>classRemoved:fromCategory:
31 SystemDictionary>>forgetClass:logged:
32 ClassRenameFixTest class(Class)>>removeFromSystem:
33 ClassRenameFixTest class(Class)>>removeFromSystem
34 [SystemChangeNotifier uniqueInstance noMoreNotificationsFor: class.
SystemAnnouncer unsubscribe: class.
class isTrait
ifFalse: [(class class includesSelector: #unload)
ifTrue: [class removeSelector: #unload]].
class removeFromSystem] in [:className |
| class |
class := Smalltalk globals classOrTraitNamed: className.
class allSubclasses
ifEmpty: [SystemChangeNotifier uniqueInstance
noMoreNotificationsFor: class.
SystemAnnouncer unsubscribe: class.
class isTrait
ifFalse: [(class class includesSelector:
#unload)
ifTrue: [class removeSelector:
#unload]].
class removeFromSystem]] in
SystemNavigation>>removeAllButPackages:
35 OrderedCollection(Collection)>>ifEmpty:
36 [:className |
| class |
class := Smalltalk globals classOrTraitNamed: className.
class allSubclasses
ifEmpty: [SystemChangeNotifier uniqueInstance
noMoreNotificationsFor: class.
SystemAnnouncer unsubscribe: class.
class isTrait
ifFalse: [(class class includesSelector:
#unload)
ifTrue: [class removeSelector:
#unload]].
class removeFromSystem]] in
SystemNavigation>>removeAllButPackages:
37 SortedCollection(OrderedCollection)>>do:
38 SystemNavigation>>removeAllButPackages:
39 [| packages |
10
timesRepeat: [(Delay forMilliseconds: 100) wait.
Processor yield].
Author fullName: 'Mr.Shrinker'.
self privCleanMonticello.
UIManager default: DummyUIManager new.
UIManager default progressBarEnabled: false.
self privCleanProcesses.
self privCleanGlobals.
5
timesRepeat: [Smalltalk garbageCollect].
MCDataStream initialize.
Beeper instVarNamed: #default put: nil.
Smalltalk cleanOutUndeclared.
5
timesRepeat: [Smalltalk garbageCollect].
Author reset.
KMPragmaKeymapBuilder release.
self privShrinkUnicodeTables.
Display newDepth: 1.
self privCleanStartUpList.
self privCleanShutDownList.
Object
subclass: #Model
instanceVariableNames: 'dependents'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Objects'.
self privCleanTextConstants.
SoundService default: nil.
SoundService unregister: DummySoundSystem.
ThreadSafeTranscript install.
self privCleanUnloadMethods.
SystemNavigation new removeAllButPackages: self kernelPackageNames.
Smalltalk flushClassNameCache.
3
timesRepeat: [Smalltalk garbageCollect.
Symbol compactSymbolTable].
Undeclared removeUnreferencedKeys.
self privRecompileAll.
self privCleanChangeSets.
SystemEventManager allInstances
do: [:i | i instVarNamed: #actionMap put: IdentityDictionary
new].
FileServices removeObsolete.
DebuggerMethodMap voidMapCache.
Object flushEvents.
MCDataStream initialize.
Locale classPool at: #LocaleChangeListeners put: nil.
SmalltalkImage classPool at: #Tools put: nil.
Behavior flushObsoleteSubclasses.
Smalltalk flushClassNameCache.
Smalltalk organization removeEmptyCategories.
WeakArray restartFinalizationProcess.
Smalltalk saveImageInNewContext] in SmalltalkImage>>privShrinkingProcess
40 BlockClosure>>on:do:
41 BlockClosure>>ifError:
42 SmalltalkImage>>privShrinkingProcess
43 [self privShrinkingProcess] in SmalltalkImage>>shrinkToKernel
44 [self value.
Processor terminateActive] in BlockClosure>>newProcess