On Mon, Jan 6, 2014 at 4:40 PM, Tobias Pape Das.Linux@gmx.de wrote:
Before trying to shrink, check that there are _not_ the 8 Obsoletes I talked about in 94EA41C1-42EF-462E-8883-A8999AA7CB03@gmx.de ( http://forum.world.st/Obsoletes-tp4732904p4732931.html)
Aha!
In the latest Trunk, there's only 6 obsolete classes, as the recent Environment changes fixed the two of them. The following script, adapted from your post above, cleans them up nicely:
" Fix obsolete ColorTheme" ColorTheme current class isObsolete ifTrue: [ ColorTheme current: nil. Smalltalk garbageCollect. ColorTheme current].
" Fix obsolete uncle classes (cls->meta->super)" (Smalltalk allClasses select: [:cls | cls theMetaClass superclass isObsolete] ) copy do: [:withObsoleteUncle | | cls2 | cls2 := withObsoleteUncle addInstVarName: 'veryUnlikelyToExisitAnywhereInTheSystemAsVariableName'. Smalltalk garbageCollect. cls2 removeInstVarName: 'veryUnlikelyToExisitAnywhereInTheSystemAsVariableName'.]. Smalltalk garbageCollect. Smalltalk fixObsoleteReferences.
Running "Smalltalk shrink" then complains about two obsolete behaviours, and I this is a bug with Installer. If I just close the debugger and inspector, collect garbage and then run "SystemNavigation default obsoleteBehaviors" I get an empty array.
So it looks like the shrink works. It doesn't do much, though. My image goes from 20.9MB, down to 20.3MB.
Colin