[squeak-dev] The Inbox: Kernel-cmm.831.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jan 8 16:25:31 UTC 2014


A new version of Kernel was added to project The Inbox:
http://source.squeak.org/inbox/Kernel-cmm.831.mcz

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

Name: Kernel-cmm.831
Author: cmm
Time: 8 January 2014, 10:24:39.553 am
UUID: 7cc78def-6be9-4aec-b2f1-08d8f7e66910
Ancestors: Kernel-fbs.829

- Factor the actual removal of individual classes into primRemoveFromSystem: to make Frank happy.
- SystemChangeNotifier, no more notifications for Obsolete classes please.
- Because we're modifying a collection while enumerating it, enumerate a copy of it instead.

=============== Diff against Kernel-fbs.829 ===============

Item was added:
+ ----- Method: Class>>primRemoveFromSystem: (in category 'initialize-release') -----
+ primRemoveFromSystem: logged
+ 	"Forget the receiver from the Smalltalk global dictionary. Any existing 
+ 	instances will refer to an obsolete version of the receiver."
+ 	
+ 	"keep the class name and category for triggering the system change message. If we wait to long, then we get obsolete information which is not what we want."
+ 
+ 	"tell class to deactivate and unload itself-- two separate events in the module system"
+ 	self deactivate; unload.
+ 	self superclass ifNotNil:
+ 		["If we have no superclass there's nothing to be remembered"
+ 		self superclass addObsoleteSubclass: self].
+ 	self environment forgetClass: self logged: logged.
+ 	SystemChangeNotifier uniqueInstance noMoreNotificationsFor: self.
+ 	self obsolete.!

Item was changed:
  ----- Method: Class>>removeFromSystem: (in category 'initialize-release') -----
+ removeFromSystem: logged 
- removeFromSystem: logged
  	"Forget the receiver from the Smalltalk global dictionary. Any existing 
  	instances will refer to an obsolete version of the receiver."
- 	
  	"keep the class name and category for triggering the system change message. If we wait to long, then we get obsolete information which is not what we want."
- 
  	"tell class to deactivate and unload itself-- two separate events in the module system"
+ 	subclasses ifNotNil:
+ 		[ subclasses copy do:
+ 			[ : each | each removeFromSystem: logged ] ].
+ 	self primRemoveFromSystem: logged!
- 	self deactivate; unload.
- 	self superclass ifNotNil:
- 		["If we have no superclass there's nothing to be remembered"
- 		self superclass addObsoleteSubclass: self].
- 	self environment forgetClass: self logged: logged.
- 	self obsolete.!



More information about the Squeak-dev mailing list