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"
> classes
> 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:
cleanUp: aggressive
"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."
^self cleanUp
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.