[squeak-dev] The Trunk: Collections.spur-nice.622.mcz

Eliot Miranda eliot.miranda at gmail.com
Thu May 7 16:34:33 UTC 2015


Hi Levente,

On Mon, May 4, 2015 at 1:55 PM, Levente Uzonyi <leves at elte.hu> wrote:

> I tried to update an old Spur image, and somehow Character >>
> #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.
> 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.


Yes.  I see this.  The bootstrap is clearly broken.  I'll look at this
right away.


>
>
> Levente
>
>
> On Mon, 4 May 2015, Levente Uzonyi wrote:
>
>  On Mon, 4 May 2015, Eliot Miranda wrote:
>>
>>  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
>>> those of you using Spur please *don't* update until I've fixed the
>>> bootstrap.
>>> 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
>>> cycles.  At least I am.
>>>
>>
>> Multilingual-ul.209 should be loaded before Collections-ul.627, and only
>> then should Collections-ul.628 be loaded.
>>
>> 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).
>>
>> Levente
>>
>>
>>> On Mon, May 4, 2015 at 10:46 AM, <commits at source.squeak.org> wrote:
>>>       Eliot Miranda uploaded a new version of Collections to project The
>>> Trunk:
>>>       http://source.squeak.org/trunk/Collections.spur-nice.622.mcz
>>>
>>>       ==================== Summary ====================
>>>
>>>       Name: Collections.spur-nice.622
>>>       Author: eem
>>>       Time: 4 May 2015, 10:45:05.244 am
>>>       UUID: 02450614-82e9-4d33-95fd-3fede06790d2
>>>       Ancestors: Collections-nice.622, Collections.spur-mt.621
>>>
>>>       Collections-nice.622 patched for Spur by
>>> SpurBootstrapMonticelloPackagePatcher Cog-eem.262
>>>
>>>       #toBraceStack: is not used for compiling { } for so long that it's
>>> really time to get rid of it.
>>>
>>>       Symbol>>numArgs: does not need to copy self into a temp var.
>>>
>>>       =============== Diff against Collections-nice.622 ===============
>>>
>>>       Item was changed:
>>>         ----- Method: Array>>elementsExchangeIdentityWith: (in category
>>> 'converting') -----
>>>         elementsExchangeIdentityWith: otherArray
>>>       +       "This primitive performs a bulk mutation, causing all
>>> pointers to the elements of the
>>>       +        receiver to be replaced by pointers to the corresponding
>>> elements of otherArray.
>>>       +        At the same time, all 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
>>> objects in hashed structures
>>>       +        should still be properly indexed after the mutation."
>>>       -       "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
>>>       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
>>>       objects in hashed structures should still be properly indexed
>>> after the mutation."
>>>
>>>       +       <primitive: 128 error: ec>
>>>       +       ec == #'bad receiver' ifTrue:
>>>       +               [^self error: 'receiver must be of class Array'].
>>>       +       ec == #'bad argument' ifTrue:
>>>       +               [^self error: (otherArray class == Array
>>>       +                                               ifTrue: ['arg must
>>> be of class Array']
>>>       +                                               ifFalse:
>>> ['receiver and argument must have the same size'])].
>>>       +       ec == #'inappropriate operation' ifTrue:
>>>       +               [^self error: 'can''t become immediates such as
>>> SmallIntegers or Characters'].
>>>       +       ec == #'no modification' ifTrue:
>>>       +               [^self error: 'can''t become immutable objects'].
>>>       +       ec == #'object is pinned' ifTrue:
>>>       +               [^self error: 'can''t become pinned objects'].
>>>       +       ec == #'insufficient object memory' ifTrue:
>>>       +               [Smalltalk garbageCollect < 1048576 ifTrue:
>>>       +                       [Smalltalk growMemoryByAtLeast: 1048576].
>>>       +                ^self elementsExchangeIdentityWith: otherArray].
>>>       +       self primitiveFailed!
>>>       -       <primitive: 128>
>>>       -       otherArray class == Array ifFalse: [^ self error: 'arg
>>> must be array'].
>>>       -       self size = otherArray size ifFalse: [^ self error:
>>> 'arrays must be same size'].
>>>       -       (self anySatisfy: [:obj | obj class == SmallInteger])
>>> ifTrue: [^ self error: 'can''t become SmallIntegers'].
>>>       -       (otherArray anySatisfy: [:obj | obj class ==
>>> SmallInteger]) ifTrue: [^ self error: 'can''t become SmallIntegers'].
>>>       -       self with: otherArray do:[:a :b| a == b ifTrue:[^self
>>> error:'can''t become yourself']].
>>>       -
>>>       -       "Must have failed because not enough space in forwarding
>>> table (see ObjectMemory-prepareForwardingTableForBecoming:with:twoWay:).
>>> Do GC and try again only once"
>>>       -       (Smalltalk bytesLeft: true) = Smalltalk
>>> primitiveGarbageCollect
>>>       -               ifTrue: [^ self primitiveFailed].
>>>       -       ^ self elementsExchangeIdentityWith: otherArray!
>>>
>>>       Item was changed:
>>>         ----- Method: Array>>elementsForwardIdentityTo: (in category
>>> 'converting') -----
>>>         elementsForwardIdentityTo: otherArray
>>>       +       "This primitive performs a bulk mutation, causing all
>>> pointers to the elements of the
>>>       +        receiver to be replaced by pointers to the corresponding
>>> elements of otherArray.
>>>       +        The identityHashes 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."
>>>       +       <primitive: 72 error: ec>
>>>       -       "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
>>>       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."
>>>       -       <primitive: 72>
>>>               self primitiveFailed!
>>>
>>>       Item was changed:
>>>         ----- Method: Array>>elementsForwardIdentityTo:copyHash: (in
>>> category 'converting') -----
>>>         elementsForwardIdentityTo: otherArray copyHash: copyHash
>>>       +       "This primitive performs a bulk mutation, causing all
>>> pointers to the elements of the
>>>       +        receiver to be replaced by pointers to the corresponding
>>> elements of otherArray.
>>>       +        If copyHash is true, the identityHashes remain with the
>>> pointers rather than with the
>>>       +        objects so that the objects in the receiver should still
>>> be properly indexed in any
>>>       +        existing hashed structures after the mutation.  If
>>> copyHash is false, then the hashes
>>>       +        of the objects in otherArray remain unchanged.  If you
>>> know what you're doing this
>>>       +        may indeed be what you want."
>>>       +       <primitive: 249 error: ec>
>>>       -       "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
>>>       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."
>>>       -       <primitive: 249>
>>>               self primitiveFailed!
>>>
>>>       Item was changed:
>>>       ==== ERROR ===
>>>
>>>       Error: Unrecognized class type
>>>
>>>       4 May 2015 5:47:40.493 pm
>>>
>>>       VM: unix - a SmalltalkImage
>>>       Image: Squeak3.11alpha [latest update: #8824]
>>>
>>>       SecurityManager state:
>>>       Restricted: false
>>>       FileAccess: true
>>>       SocketAccess: true
>>>       Working Dir /home/squeaksource
>>>       Trusted Dir /home/squeaksource/secure
>>>       Untrusted Dir /home/squeaksource/My Squeak
>>>
>>>       MCClassDefinition(Object)>>error:
>>>               Receiver: a MCClassDefinition(Character)
>>>               Arguments and temporary variables:
>>>                       aString:        'Unrecognized class type'
>>>               Receiver's instance variables:
>>>                       name:   #Character
>>>                       superclassName:         #Magnitude
>>>                       variables:      an OrderedCollection(a
>>> MCClassVariableDefinition(CharacterTable) a M...etc...
>>>                       category:       'Collections-Strings'
>>>                       type:   #immediate
>>>                       comment:        'I represent a character by
>>> storing its associated Unicode as an unsig...etc...
>>>                       commentStamp:   'eem 8/12/2014 14:53'
>>>                       traitComposition:       nil
>>>                       classTraitComposition:  nil
>>>
>>>       MCClassDefinition>>kindOfSubclass
>>>               Receiver: a MCClassDefinition(Character)
>>>               Arguments and temporary variables:
>>>
>>>               Receiver's instance variables:
>>>                       name:   #Character
>>>                       superclassName:         #Magnitude
>>>                       variables:      an OrderedCollection(a
>>> MCClassVariableDefinition(CharacterTable) a M...etc...
>>>                       category:       'Collections-Strings'
>>>                       type:   #immediate
>>>                       comment:        'I represent a character by
>>> storing its associated Unicode as an unsig...etc...
>>>                       commentStamp:   'eem 8/12/2014 14:53'
>>>                       traitComposition:       nil
>>>                       classTraitComposition:  nil
>>>
>>>       MCClassDefinition>>printDefinitionOn:
>>>               Receiver: a MCClassDefinition(Character)
>>>               Arguments and temporary variables:
>>>                       stream:         a WriteStream
>>>               Receiver's instance variables:
>>>                       name:   #Character
>>>                       superclassName:         #Magnitude
>>>                       variables:      an OrderedCollection(a
>>> MCClassVariableDefinition(CharacterTable) a M...etc...
>>>                       category:       'Collections-Strings'
>>>                       type:   #immediate
>>>                       comment:        'I represent a character by
>>> storing its associated Unicode as an unsig...etc...
>>>                       commentStamp:   'eem 8/12/2014 14:53'
>>>                       traitComposition:       nil
>>>                       classTraitComposition:  nil
>>>
>>>       [] in MCDiffyTextWriter(MCStWriter)>>writeClassDefinition:
>>>               Receiver: a MCDiffyTextWriter
>>>               Arguments and temporary variables:
>>>                       definition:     a WriteStream
>>>                       s:      a MCClassDefinition(Character)
>>>               Receiver's instance variables:
>>>                       stream:         a WriteStream
>>>                       initStream:     nil
>>>
>>>
>>>       --- The full stack ---
>>>       MCClassDefinition(Object)>>error:
>>>       MCClassDefinition>>kindOfSubclass
>>>       MCClassDefinition>>printDefinitionOn:
>>>       [] in MCDiffyTextWriter(MCStWriter)>>writeClassDefinition:
>>>        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>>>       String class(SequenceableCollection class)>>new:streamContents:
>>>       String class(SequenceableCollection class)>>streamContents:
>>>       MCDiffyTextWriter(MCTextWriter)>>chunkContents:
>>>       MCDiffyTextWriter(MCStWriter)>>writeClassDefinition:
>>>       MCDiffyTextWriter(MCStWriter)>>visitClassDefinition:
>>>       MCClassDefinition>>accept:
>>>       [] in MCDiffyTextWriter(MCTextWriter)>>visitInFork:
>>>       String class(SequenceableCollection class)>>new:streamContents:
>>>       String class(SequenceableCollection class)>>streamContents:
>>>       MCDiffyTextWriter(MCTextWriter)>>visitInFork:
>>>       MCDiffyTextWriter>>writePatchFrom:to:
>>>       MCDiffyTextWriter>>writeModification:
>>>       [] in MCDiffyTextWriter>>writePatch:
>>>       SortedCollection(OrderedCollection)>>do:
>>>       MCDiffyTextWriter>>writePatch:
>>>       SSDiffyTextWriter>>writePatch:
>>>       [] in SSDiffyTextWriter>>writeVersion:for:
>>>       BlockClosure>>on:do:
>>>       SSDiffyTextWriter>>writeVersion:for:
>>>       [] in SSEMailSubscription>>versionAdded:to:
>>>       BlockClosure>>on:do:
>>>       SSEMailSubscription>>versionAdded:to:
>>>       [] in [] in SSProject>>versionAdded:
>>>       [] in BlockClosure>>newProcess
>>>
>>>
>>>
>>>
>>> --
>>> best,Eliot
>>>
>>>
>
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20150507/f166e650/attachment-0001.htm


More information about the Squeak-dev mailing list