<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">&lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt;</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&#39;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&gt;&gt;primRemoveFromSystem: (in category &#39;initialize-release&#39;) -----<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">
+       &quot;Forget the receiver from the Smalltalk global dictionary. Any existing<br>
+       instances will refer to an obsolete version of the receiver.&quot;<br>
+<br>
+       &quot;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.&quot;<br>
+<br>
+       &quot;tell class to deactivate and unload itself-- two separate events in the module system&quot;<br>
+       self deactivate; unload.<br>
+       self superclass ifNotNil:<br>
+               [&quot;If we have no superclass there&#39;s nothing to be remembered&quot;<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&gt;&gt;removeFromSystem: (in category &#39;initialize-release&#39;) -----<br>
+ removeFromSystem: logged<br>
- removeFromSystem: logged<br>
        &quot;Forget the receiver from the Smalltalk global dictionary. Any existing<br>
        instances will refer to an obsolete version of the receiver.&quot;<br>
-<br>
        &quot;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.&quot;<br>
-<br>
        &quot;tell class to deactivate and unload itself-- two separate events in the module system&quot;<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>
-               [&quot;If we have no superclass there&#39;s nothing to be remembered&quot;<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>