<div dir="ltr">Hi Levente,<div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 7, 2015 at 9:34 AM, Eliot Miranda <span dir="ltr">&lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Levente,<div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Mon, May 4, 2015 at 1:55 PM, Levente Uzonyi <span dir="ltr">&lt;<a href="mailto:leves@elte.hu" target="_blank">leves@elte.hu</a>&gt;</span> wrote:<br></span><span class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I tried to update an old Spur image, and somehow Character &gt;&gt; #isAlphaNumeric from Collections.spur-ul.628 (which should be loaded by update.spur-ul.311) appeared in the image, while loading Collections.spur-tfel.623 from update.spur-mt.310.<br>
Assuming that the load order of the packages is untouched, I suspect that the method got merged in from the non-spur branch of Collections somehow.</blockquote><div><br></div></span><div>Yes.  I see this.  The bootstrap is clearly broken.  I&#39;ll look at this right away.</div></div></div></div></blockquote><div><br></div><div>Ah, MCMethodDefinition class&gt;&gt;className: classString</div><div>classIsMeta: metaBoolean</div><div>selector: selectorString</div><div>category: catString</div><div>timeStamp: timeString</div><div>source: sourceString</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>^ self instanceLike:</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>(self new initializeWithClassName: classString</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>classIsMeta: metaBoolean</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>selector: selectorString</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>category: catString</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>timeStamp: timeString</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>source: sourceString)</div><div><br></div><div><span class="Apple-style-span">this will share definitions, and given that I&#39;m modifying definitions as part of the patch process I guess I could end up modifying a definition that was inadvertently shared.  I&#39;m rewriting to avoid use of shared instances.  i.e. I will use </span>MCMethodDefinition<span class="Apple-style-span"> new </span>initializeWithClassName ... instead of MCMethodDefinition className: ...</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span><font color="#888888"><br>
<br>
Levente</font></span><div><div><br>
<br>
On Mon, 4 May 2015, Levente Uzonyi wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Mon, 4 May 2015, Eliot Miranda wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This breaks my image, dumping it into the emergency evaluator, I *think* because the new LetterMask, AlphaNumbericMask and DigitBit variables are not handledf correctly by the Spur bootstrap.  Sigh.  So for<br>
those of you using Spur please *don&#39;t* update until I&#39;ve fixed the bootstrap.<br>
You know, by /not/ releasing, we are delaying because now I am fixing the bootstrap to keep up with development, instead of us having released, and being able to freely commit on Spur.  We are now wasting<br>
cycles.  At least I am.<br>
</blockquote>
<br>
Multilingual-ul.209 should be loaded before Collections-ul.627, and only then should Collections-ul.628 be loaded.<br>
<br>
In the regular Trunk, I added an update map which loads Multilingual-ul.209 and Collections-ul.627 first. (Multilingual was before Collections in the map, so the load order was already guaranteed).<br>
<br>
Levente<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
On Mon, May 4, 2015 at 10:46 AM, &lt;<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>&gt; wrote:<br>
      Eliot Miranda uploaded a new version of Collections to project The Trunk:<br>
      <a href="http://source.squeak.org/trunk/Collections.spur-nice.622.mcz" target="_blank">http://source.squeak.org/trunk/Collections.spur-nice.622.mcz</a><br>
<br>
      ==================== Summary ====================<br>
<br>
      Name: Collections.spur-nice.622<br>
      Author: eem<br>
      Time: 4 May 2015, 10:45:05.244 am<br>
      UUID: 02450614-82e9-4d33-95fd-3fede06790d2<br>
      Ancestors: Collections-nice.622, Collections.spur-mt.621<br>
<br>
      Collections-nice.622 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.262<br>
<br>
      #toBraceStack: is not used for compiling { } for so long that it&#39;s really time to get rid of it.<br>
<br>
      Symbol&gt;&gt;numArgs: does not need to copy self into a temp var.<br>
<br>
      =============== Diff against Collections-nice.622 ===============<br>
<br>
      Item was changed:<br>
        ----- Method: Array&gt;&gt;elementsExchangeIdentityWith: (in category &#39;converting&#39;) -----<br>
        elementsExchangeIdentityWith: otherArray<br>
      +       &quot;This primitive performs a bulk mutation, causing all pointers to the elements of the<br>
      +        receiver to be replaced by pointers to the corresponding elements of otherArray.<br>
      +        At the same time, all pointers to the elements of otherArray are replaced by<br>
      +        pointers to the corresponding elements of this array.  The identityHashes remain<br>
      +        with the pointers rather than with the objects so that objects in hashed structures<br>
      +        should still be properly indexed after the mutation.&quot;<br>
      -       &quot;This primitive performs a bulk mutation, causing all pointers to the elements of this array to be replaced by pointers to the corresponding elements of otherArray.  At the same time, all<br>
      pointers to the elements of otherArray are replaced by pointers to the corresponding elements of this array.  The identityHashes remain with the pointers rather than with the objects so that<br>
      objects in hashed structures should still be properly indexed after the mutation.&quot;<br>
<br>
      +       &lt;primitive: 128 error: ec&gt;<br>
      +       ec == #&#39;bad receiver&#39; ifTrue:<br>
      +               [^self error: &#39;receiver must be of class Array&#39;].<br>
      +       ec == #&#39;bad argument&#39; ifTrue:<br>
      +               [^self error: (otherArray class == Array<br>
      +                                               ifTrue: [&#39;arg must be of class Array&#39;]<br>
      +                                               ifFalse: [&#39;receiver and argument must have the same size&#39;])].<br>
      +       ec == #&#39;inappropriate operation&#39; ifTrue:<br>
      +               [^self error: &#39;can&#39;&#39;t become immediates such as SmallIntegers or Characters&#39;].<br>
      +       ec == #&#39;no modification&#39; ifTrue:<br>
      +               [^self error: &#39;can&#39;&#39;t become immutable objects&#39;].<br>
      +       ec == #&#39;object is pinned&#39; ifTrue:<br>
      +               [^self error: &#39;can&#39;&#39;t become pinned objects&#39;].<br>
      +       ec == #&#39;insufficient object memory&#39; ifTrue:<br>
      +               [Smalltalk garbageCollect &lt; 1048576 ifTrue:<br>
      +                       [Smalltalk growMemoryByAtLeast: 1048576].<br>
      +                ^self elementsExchangeIdentityWith: otherArray].<br>
      +       self primitiveFailed!<br>
      -       &lt;primitive: 128&gt;<br>
      -       otherArray class == Array ifFalse: [^ self error: &#39;arg must be array&#39;].<br>
      -       self size = otherArray size ifFalse: [^ self error: &#39;arrays must be same size&#39;].<br>
      -       (self anySatisfy: [:obj | obj class == SmallInteger]) ifTrue: [^ self error: &#39;can&#39;&#39;t become SmallIntegers&#39;].<br>
      -       (otherArray anySatisfy: [:obj | obj class == SmallInteger]) ifTrue: [^ self error: &#39;can&#39;&#39;t become SmallIntegers&#39;].<br>
      -       self with: otherArray do:[:a :b| a == b ifTrue:[^self error:&#39;can&#39;&#39;t become yourself&#39;]].<br>
      -<br>
      -       &quot;Must have failed because not enough space in forwarding table (see ObjectMemory-prepareForwardingTableForBecoming:with:twoWay:).  Do GC and try again only once&quot;<br>
      -       (Smalltalk bytesLeft: true) = Smalltalk primitiveGarbageCollect<br>
      -               ifTrue: [^ self primitiveFailed].<br>
      -       ^ self elementsExchangeIdentityWith: otherArray!<br>
<br>
      Item was changed:<br>
        ----- Method: Array&gt;&gt;elementsForwardIdentityTo: (in category &#39;converting&#39;) -----<br>
        elementsForwardIdentityTo: otherArray<br>
      +       &quot;This primitive performs a bulk mutation, causing all pointers to the elements of the<br>
      +        receiver to be replaced by pointers to the corresponding elements of otherArray.<br>
      +        The identityHashes remain with the pointers rather than with the objects so that<br>
      +        the objects in this array should still be properly indexed in any existing hashed<br>
      +        structures after the mutation.&quot;<br>
      +       &lt;primitive: 72 error: ec&gt;<br>
      -       &quot;This primitive performs a bulk mutation, causing all pointers to the elements of this array to be replaced by pointers to the corresponding elements of otherArray.  The identityHashes<br>
      remain with the pointers rather than with the objects so that the objects in this array should still be properly indexed in any existing hashed structures after the mutation.&quot;<br>
      -       &lt;primitive: 72&gt;<br>
              self primitiveFailed!<br>
<br>
      Item was changed:<br>
        ----- Method: Array&gt;&gt;elementsForwardIdentityTo:copyHash: (in category &#39;converting&#39;) -----<br>
        elementsForwardIdentityTo: otherArray copyHash: copyHash<br>
      +       &quot;This primitive performs a bulk mutation, causing all pointers to the elements of the<br>
      +        receiver to be replaced by pointers to the corresponding elements of otherArray.<br>
      +        If copyHash is true, the identityHashes remain with the pointers rather than with the<br>
      +        objects so that the objects in the receiver should still be properly indexed in any<br>
      +        existing hashed structures after the mutation.  If copyHash is false, then the hashes<br>
      +        of the objects in otherArray remain unchanged.  If you know what you&#39;re doing this<br>
      +        may indeed be what you want.&quot;<br>
      +       &lt;primitive: 249 error: ec&gt;<br>
      -       &quot;This primitive performs a bulk mutation, causing all pointers to the elements of this array to be replaced by pointers to the corresponding elements of otherArray.  The identityHashes<br>
      remain with the pointers rather than with the objects so that the objects in this array should still be properly indexed in any existing hashed structures after the mutation.&quot;<br>
      -       &lt;primitive: 249&gt;<br>
              self primitiveFailed!<br>
<br>
      Item was changed:<br>
      ==== ERROR ===<br>
<br>
      Error: Unrecognized class type<br>
<br>
      4 May 2015 5:47:40.493 pm<br>
<br>
      VM: unix - a SmalltalkImage<br>
      Image: Squeak3.11alpha [latest update: #8824]<br>
<br>
      SecurityManager state:<br>
      Restricted: false<br>
      FileAccess: true<br>
      SocketAccess: true<br>
      Working Dir /home/squeaksource<br>
      Trusted Dir /home/squeaksource/secure<br>
      Untrusted Dir /home/squeaksource/My Squeak<br>
<br>
      MCClassDefinition(Object)&gt;&gt;error:<br>
              Receiver: a MCClassDefinition(Character)<br>
              Arguments and temporary variables:<br>
                      aString:        &#39;Unrecognized class type&#39;<br>
              Receiver&#39;s instance variables:<br>
                      name:   #Character<br>
                      superclassName:         #Magnitude<br>
                      variables:      an OrderedCollection(a MCClassVariableDefinition(CharacterTable) a M...etc...<br>
                      category:       &#39;Collections-Strings&#39;<br>
                      type:   #immediate<br>
                      comment:        &#39;I represent a character by storing its associated Unicode as an unsig...etc...<br>
                      commentStamp:   &#39;eem 8/12/2014 14:53&#39;<br>
                      traitComposition:       nil<br>
                      classTraitComposition:  nil<br>
<br>
      MCClassDefinition&gt;&gt;kindOfSubclass<br>
              Receiver: a MCClassDefinition(Character)<br>
              Arguments and temporary variables:<br>
<br>
              Receiver&#39;s instance variables:<br>
                      name:   #Character<br>
                      superclassName:         #Magnitude<br>
                      variables:      an OrderedCollection(a MCClassVariableDefinition(CharacterTable) a M...etc...<br>
                      category:       &#39;Collections-Strings&#39;<br>
                      type:   #immediate<br>
                      comment:        &#39;I represent a character by storing its associated Unicode as an unsig...etc...<br>
                      commentStamp:   &#39;eem 8/12/2014 14:53&#39;<br>
                      traitComposition:       nil<br>
                      classTraitComposition:  nil<br>
<br>
      MCClassDefinition&gt;&gt;printDefinitionOn:<br>
              Receiver: a MCClassDefinition(Character)<br>
              Arguments and temporary variables:<br>
                      stream:         a WriteStream<br>
              Receiver&#39;s instance variables:<br>
                      name:   #Character<br>
                      superclassName:         #Magnitude<br>
                      variables:      an OrderedCollection(a MCClassVariableDefinition(CharacterTable) a M...etc...<br>
                      category:       &#39;Collections-Strings&#39;<br>
                      type:   #immediate<br>
                      comment:        &#39;I represent a character by storing its associated Unicode as an unsig...etc...<br>
                      commentStamp:   &#39;eem 8/12/2014 14:53&#39;<br>
                      traitComposition:       nil<br>
                      classTraitComposition:  nil<br>
<br>
      [] in MCDiffyTextWriter(MCStWriter)&gt;&gt;writeClassDefinition:<br>
              Receiver: a MCDiffyTextWriter<br>
              Arguments and temporary variables:<br>
                      definition:     a WriteStream<br>
                      s:      a MCClassDefinition(Character)<br>
              Receiver&#39;s instance variables:<br>
                      stream:         a WriteStream<br>
                      initStream:     nil<br>
<br>
<br>
      --- The full stack ---<br>
      MCClassDefinition(Object)&gt;&gt;error:<br>
      MCClassDefinition&gt;&gt;kindOfSubclass<br>
      MCClassDefinition&gt;&gt;printDefinitionOn:<br>
      [] in MCDiffyTextWriter(MCStWriter)&gt;&gt;writeClassDefinition:<br>
       - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>
      String class(SequenceableCollection class)&gt;&gt;new:streamContents:<br>
      String class(SequenceableCollection class)&gt;&gt;streamContents:<br>
      MCDiffyTextWriter(MCTextWriter)&gt;&gt;chunkContents:<br>
      MCDiffyTextWriter(MCStWriter)&gt;&gt;writeClassDefinition:<br>
      MCDiffyTextWriter(MCStWriter)&gt;&gt;visitClassDefinition:<br>
      MCClassDefinition&gt;&gt;accept:<br>
      [] in MCDiffyTextWriter(MCTextWriter)&gt;&gt;visitInFork:<br>
      String class(SequenceableCollection class)&gt;&gt;new:streamContents:<br>
      String class(SequenceableCollection class)&gt;&gt;streamContents:<br>
      MCDiffyTextWriter(MCTextWriter)&gt;&gt;visitInFork:<br>
      MCDiffyTextWriter&gt;&gt;writePatchFrom:to:<br>
      MCDiffyTextWriter&gt;&gt;writeModification:<br>
      [] in MCDiffyTextWriter&gt;&gt;writePatch:<br>
      SortedCollection(OrderedCollection)&gt;&gt;do:<br>
      MCDiffyTextWriter&gt;&gt;writePatch:<br>
      SSDiffyTextWriter&gt;&gt;writePatch:<br>
      [] in SSDiffyTextWriter&gt;&gt;writeVersion:for:<br>
      BlockClosure&gt;&gt;on:do:<br>
      SSDiffyTextWriter&gt;&gt;writeVersion:for:<br>
      [] in SSEMailSubscription&gt;&gt;versionAdded:to:<br>
      BlockClosure&gt;&gt;on:do:<br>
      SSEMailSubscription&gt;&gt;versionAdded:to:<br>
      [] in [] in SSProject&gt;&gt;versionAdded:<br>
      [] in BlockClosure&gt;&gt;newProcess<br>
<br>
<br>
<br>
<br>
--<br>
best,Eliot<br>
<br>
</blockquote>
</blockquote>
</div></div><br><br>
<br></blockquote></div></div></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div>best,<div>Eliot</div></div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">best,<div>Eliot</div></div>
</div></div>