[V3dot10] [Q] Removing obsolete Players on a crowded image

Edgar J. De Cleene edgardec2001 at yahoo.com.ar
Mon Jan 22 13:36:46 UTC 2007


I try my removal on a Squeak3.9b-7051, what I have full of odd things.

Wish test  the attached , as if possible people could actualize image
without loading a new one.

The procedure fails if you have Undeclared into your image, what I bet my 2
cents of peso you have.

You could do Smalltalk at:# Undeclared put: Dictionary new for fooling.
But if you have Players , the removing of obsoletes do not complete.

I do the following what works

!TPureBehavior methodsFor: 'initialization' stamp: 'edc 1/22/2007 10:14'
prior: 45049134!
obsolete
    "Invalidate and recycle local methods,
    e.g., zap the method dictionary if can be done safely."
    self canZapMethodDictionary
        ifTrue: [self methodDict: self emptyMethodDictionary].
        self superclass = Player ifTrue:[^self] .
    self hasTraitComposition ifTrue: [
        self traitComposition traits do: [:each |
            each removeUser: self]]

Things like this populate all Squeak ....

Now, how the best code looks ? I wish learn.

Edgar

-------------- next part --------------
'From Squeak3.9 of 7 November 2006 [latest update: #7067] on 22 January 2007 at 7:50:44 am'!
"Change Set:		7068Starting3dot10
Date:			28 November 2006
Author:			Edgar J. De Cleene

ReleaseBuilder was used for a long time ,
I suggest return to this way and do a method for this 3.10alpha .
This could change>"!


!Flaps class methodsFor: 'flaps registry' stamp: 'edc 12/9/2006 09:23'!
defaultsQuadsDefiningWidgetsFlap
	"Answer a structure defining the default Widgets flap.
     previously in quadsDefiningWidgetsFlap"

	^ #(
	(TrashCanMorph			new						'Trash'		
		'A tool for discarding objects')
	(AllScriptsTool			allScriptsToolForActiveWorld	'All
Scripts' 		'A tool that lets you see and control all the running
scripts in your project')
	(PaintInvokingMorph	new						'Paint'		
		'Drop this into an area to start making a fresh painting there')
	(GeeMailMorph			new						'Gee-Mail'	
		'A place to present annotated content')
	(RecordingControlsMorph	authoringPrototype		'Sound'		
		'A device for making sound recordings.')
	"(MPEGMoviePlayerMorph	authoringPrototype		'Movie
Player'		'A Player for MPEG movies')"
	(FrameRateMorph		authoringPrototype			'Frame
Rate'		'An indicator of how fast your system is running')
	(MagnifierMorph		newRound					'Magnifier'	
		'A magnifying glass')
	(ScriptingSystem		newScriptingSpace			'Scripting'	
		'A confined place for drawing and scripting, with its own
private stop/step/go buttons.')
	(ScriptingSystem		holderWithAlphabet			'Alphabet'	
		'A source for single-letter objects')
	(BouncingAtomsMorph	new						'Bouncing
Atoms'	'Atoms, mate')
	(ObjectsTool				newStandAlone				'Object
Catalog'		'A tool that lets you browse the catalog of objects')
	) asOrderedCollection! !


!ReleaseBuilder methodsFor: 'utilities' stamp: 'ar 9/27/2005 21:44'!
initialCleanup
	"Perform various image cleanups in preparation for making a Squeak
gamma release candidate image."
	"ReleaseBuilder new initialCleanup"
	
	Undeclared removeUnreferencedKeys.
	StandardScriptingSystem initialize.

	(Object classPool at: #DependentsFields) size > 1 ifTrue: [self
error:'Still have dependents'].
	Undeclared isEmpty ifFalse: [self error:'Please clean out
Undeclared'].

	Smalltalk at: #Browser ifPresent:[:br| br initialize].
	ScriptingSystem deletePrivateGraphics.  "?"
	
	self cleanUpChanges.
	ChangeSet current clear.
	ChangeSet current name: 'Unnamed1'.
	Smalltalk garbageCollect.

	"Reinitialize DataStream; it may hold on to some zapped entitities"
	DataStream initialize.

	Smalltalk garbageCollect.
	ScheduledControllers := nil.
	Smalltalk garbageCollect.
	
	SMSqueakMap default purge.
	
! !

!ReleaseBuilder methodsFor: 'squeakThreeTen' stamp: 'edc 12/9/2006
10:53'!
makeSqueakRelease
| po |
	World removeAllMorphs.
	CommandHistory resetAllHistory.
	
	Smalltalk
		at: #Player
		ifPresent: [:superCls | superCls
				allSubclassesDo: [:cls | 
					cls isSystemDefined
						ifFalse: [cls removeFromSystem].
					cls := nil]].
	Smalltalk garbageCollect.
	po := PackageOrganizer new.
	#( 'Flash' 'StarSqueak' 'SmaCC' 'ScriptLoader' 'Speech' 'Movies'
'FixUnderscores' 'OB' 'OmniBrowser' ) do:[:ea| (MCPackage named: ea)
unload.
po unregisterPackage: (PackageInfo named:ea)

].
		#(TheWorldMenu FileServices AppRegistry Preferences FileList)
do: [:cl| (Smalltalk at: cl) removeObsolete].

	3 timesRepeat: [Smalltalk garbageCollect].
	
	DataStream initialize.
	Flaps replaceGlobalFlapwithID: 'Tools' translated.
	Flaps replaceGlobalFlapwithID: 'Widgets' translated.
	SmalltalkImage current fixObsoleteReferences.
	
	
	SystemOrganization removeEmptyCategories.
	Smalltalk garbageCollect.
	ScheduledControllers := nil.
	Behavior flushObsoleteSubclasses.
	3 timesRepeat: [Smalltalk garbageCollect].

	! !

!ReleaseBuilder methodsFor: 'squeakThreeTen' stamp: 'edc 12/1/2006
14:25'!
makeSqueakThreeTenRelease
	"ReleaseBuilder new makeSqueakThreeTenRelease"

	self 
		makeSqueakThreeTenReleasePhasePrepare;
		makeSqueakRelease; 		
		makeSqueakThreeTenReleasePhaseCleanup! !

!ReleaseBuilder methodsFor: 'squeakThreeTen' stamp: 'edc 12/1/2006
14:21'!
makeSqueakThreeTenReleasePhaseCleanup
	"ReleaseBuilder new makeSqueakThreeTenReleasePhaseCleanup"
| newVersion |
	Smalltalk at: #Browser ifPresent:[:br| br initialize].
	ChangeSet 
		removeChangeSetsNamedSuchThat: [:cs | cs name ~= ChangeSet
current name].
	ChangeSet current clear.
	ChangeSet current name: 'Unnamed1'.
	Smalltalk garbageCollect.
	"Reinitialize DataStream; it may hold on to some zapped entitities"
	DataStream initialize.
	"Remove existing player references"
	References keys do: [:k | References removeKey: k].
	Smalltalk garbageCollect.
	ScheduledControllers := nil.
	Behavior flushObsoleteSubclasses.
	Smalltalk
		garbageCollect;
		garbageCollect.
	SystemNavigation default obsoleteBehaviors isEmpty 
		ifFalse: [self error: 'Still have obsolete behaviors'].

	"Reinitialize DataStream; it may hold on to some zapped entitities"
	DataStream initialize.
	self fixObsoleteReferences.
	"Smalltalk abandonTempNames."
	Smalltalk zapAllOtherProjects.
	Smalltalk forgetDoIts.
	Smalltalk flushClassNameCache.
	3 timesRepeat: 
			[Smalltalk garbageCollect.
			Symbol compactSymbolTable].
SystemVersion current registerUpdate: SystemVersion current
highestUpdate + 1.
	newVersion := 'Squeak3.10alpha.' , SystemVersion current
highestUpdate printString. 

	SystemVersion newVersion: newVersion.
	newVersion := newVersion ,'.'.
	(SourceFiles at: 2) ifNotNil:
		[SmalltalkImage current closeSourceFiles; "so copying the
changes file will always work"
			 saveChangesInFileNamed: (SmalltalkImage current
fullNameForChangesNamed: newVersion)].
	SmalltalkImage current saveImageInFileNamed: (SmalltalkImage current
fullNameForImageNamed: newVersion)
		! !

!ReleaseBuilder methodsFor: 'squeakThreeTen' stamp: 'edc 12/1/2006
14:20'!
makeSqueakThreeTenReleasePhasePrepare
	"ReleaseBuilder new makeSqueakThreeTenReleasePhasePrepare"

	Undeclared removeUnreferencedKeys.
	StandardScriptingSystem initialize.
	Preferences initialize.
	"(Object classPool at: #DependentsFields) size > 1 ifTrue: [self
error:'Still have dependents']."
	Undeclared isEmpty ifFalse: [self error:'Please clean out
Undeclared'].

	"Dump all projects"
	Project allSubInstancesDo:[:prj| prj == Project current
ifFalse:[Project deletingProject: prj]].

	"Set new look so we don't need older fonts later"
	StandardScriptingSystem applyNewEToyLook.

	Smalltalk at: #Browser ifPresent:[:br| br initialize].
	ScriptingSystem deletePrivateGraphics.
	ChangeSet removeChangeSetsNamedSuchThat:
		[:cs| cs name ~= ChangeSet current name].
	ChangeSet current clear.
	ChangeSet current name: 'Unnamed1'.
	Smalltalk garbageCollect.
	"Reinitialize DataStream; it may hold on to some zapped entitities"
	DataStream initialize.
	"Remove existing player references"
	References keys do:[:k| References removeKey: k].

	Smalltalk garbageCollect.
	ScheduledControllers := nil.
	Smalltalk garbageCollect.
! !

ReleaseBuilder new makeSqueakThreeTenRelease.

gf := GradientFillStyle  ramp: {0.0->(Color r: 0.97 g: 0.98 b: 1.0) .
1.0->(Color r: 0.0 g: 0.658 b: 0.474)}.
	gf	origin: 0 @ 0;
		direction: 0 at 400;
		normal: 640 at 0;
		radial: false.
World fillStyle: gf!



More information about the V3dot10 mailing list