[squeak-dev] The Trunk: System-cwp.501.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Nov 8 06:08:12 UTC 2012

Colin Putney uploaded a new version of System to project The Trunk:

==================== Summary ====================

Name: System-cwp.501
Author: cwp
Time: 7 November 2012, 10:06:06.385 pm
UUID: 6cc43c45-80fd-43fd-bf05-13adf4e37864
Ancestors: System-dtl.500

When removing a class from the system, catch AttemptToWriteReadOnlyGlobal, and proceed with the modification.

=============== Diff against System-dtl.500 ===============

Item was changed:
  ----- Method: SystemDictionary>>forgetClass:logged: (in category 'classes and traits') -----
  forgetClass: aClass logged: aBool 
  	"Delete the class, aClass, from the system.
  	Note that this doesn't do everything required to dispose of a class - to do that use Class>>removeFromSystem."
  	aBool ifTrue: [SystemChangeNotifier uniqueInstance classRemoved: aClass fromCategory: aClass category].
  	self organization removeElement: aClass name.
  	Smalltalk removeFromStartUpList: aClass.
  	Smalltalk removeFromShutDownList: aClass.
  	aClass isObsolete ifFalse: [
  		(self associationAt: aClass name ifAbsent: [ nil ]) ifNotNil: [ :oldBinding |
  			| newBinding |
  			newBinding := oldBinding shallowCopy.
  			self replaceBinding: oldBinding in: aClass with: newBinding.
  			(self isThisBindingReferred: oldBinding) ifTrue: [
+ 				[oldBinding value: nil]
+ 					on: AttemptToWriteReadOnlyGlobal
+ 					do: [:ex | true].
- 				oldBinding value: nil.
  				Undeclared add: oldBinding ] ] ].
  	self removeKey: aClass name ifAbsent: [].
  	self flushClassNameCache!

More information about the Squeak-dev mailing list