[Pharo-project] UndefinedObject(Object)>>doesNotUnderstand: #findNextHandlerContextStarting
marcus.denker at inria.fr
Fri Apr 29 23:31:40 CEST 2011
On Apr 29, 2011, at 11:23 PM, Mariano Martinez Peck wrote:
> > So I added the DebuggerMethodMap intialize (reset the cache) to Smalltalk cleanUp.
> > Thanks Marcus. I don't see this commit. Did you commit it? or we lost it with the squeaksource down ?
> This was part of the cleanUp improvements... some time ago.
> see DebuggerMethodMap>>#cleanUp
> ok...after looking for a while, it is never called when you do
> Smalltalk cleanUp: true except: #() confirming: false.
> I think it is because such method does:
> "Find all classes implementing #cleanUp or cleanUp:"
> classes := Smalltalk allClasses select: [:aClass|
> (aClass class includesSelector: #cleanUp)
> or: [aClass class includesSelector: #cleanUp:]].
> it checks for both messages, #cleanUp: or #cleanUp
> But then, it does:
> "Run the cleanup code"
> do:[:aClass| aClass cleanUp: aggressive]
> displayingProgress: [:aClass| 'Cleaning up in ', aClass name].
> In your case, DebuggerMethodMap only implements #cleanUp, hence it is never called.
But there is in Behavior:
"Clean out any caches and other state that should be flushed when trying to get an image into a pristine state. The argument should be used to indicate how aggressive the cleanup should be. Some subclasses may act differently depending on its value - for example, ChangeSet will only delete all unused and reinitialize the current change set if we're asking it to be aggressive."
So it calls cleanUp even when you do Smalltlak cleanUp: true.
Now I wonder if we should remove the displayingProgress and do the call to #cleanUp (the non-agressive one) on image save....
Marcus Denker -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.
More information about the Pharo-project