<div dir="ltr">Hi Chris,<br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Jan 8, 2014 at 8:24 AM, <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">A new version of Kernel was added to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Kernel-cmm.831.mcz" target="_blank">http://source.squeak.org/inbox/Kernel-cmm.831.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Kernel-cmm.831<br>
Author: cmm<br>
Time: 8 January 2014, 10:24:39.553 am<br>
UUID: 7cc78def-6be9-4aec-b2f1-08d8f7e66910<br>
Ancestors: Kernel-fbs.829<br>
<br>
- Factor the actual removal of individual classes into primRemoveFromSystem: to make Frank happy.<br>
- SystemChangeNotifier, no more notifications for Obsolete classes please.<br>
- Because we're modifying a collection while enumerating it, enumerate a copy of it instead.<br>
<br>
=============== Diff against Kernel-fbs.829 ===============<br>
<br>
Item was added:<br>
+ ----- Method: Class>>primRemoveFromSystem: (in category 'initialize-release') -----<br>
+ primRemoveFromSystem: logged<br></blockquote><div><br></div><div>The convention is to use prim or primitive for VM things, and basic for image things. So basicRemoveSelector: and removeSelector: etc. So this is better-named basicRemoveFromSystem: [ irrespective of whether you decide to keep this code or not ;-) ].</div>
<div> </div><div>HTH,</div><div>Eliot</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+ "Forget the receiver from the Smalltalk global dictionary. Any existing<br>
+ instances will refer to an obsolete version of the receiver."<br>
+<br>
+ "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."<br>
+<br>
+ "tell class to deactivate and unload itself-- two separate events in the module system"<br>
+ self deactivate; unload.<br>
+ self superclass ifNotNil:<br>
+ ["If we have no superclass there's nothing to be remembered"<br>
+ self superclass addObsoleteSubclass: self].<br>
+ self environment forgetClass: self logged: logged.<br>
+ SystemChangeNotifier uniqueInstance noMoreNotificationsFor: self.<br>
+ self obsolete.!<br>
<br>
Item was changed:<br>
----- Method: Class>>removeFromSystem: (in category 'initialize-release') -----<br>
+ removeFromSystem: logged<br>
- removeFromSystem: logged<br>
"Forget the receiver from the Smalltalk global dictionary. Any existing<br>
instances will refer to an obsolete version of the receiver."<br>
-<br>
"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."<br>
-<br>
"tell class to deactivate and unload itself-- two separate events in the module system"<br>
+ subclasses ifNotNil:<br>
+ [ subclasses copy do:<br>
+ [ : each | each removeFromSystem: logged ] ].<br>
+ self primRemoveFromSystem: logged!<br>
- self deactivate; unload.<br>
- self superclass ifNotNil:<br>
- ["If we have no superclass there's nothing to be remembered"<br>
- self superclass addObsoleteSubclass: self].<br>
- self environment forgetClass: self logged: logged.<br>
- self obsolete.!<br>
<br>
<br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div>
</div></div>