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

Eliot Miranda eliot.miranda at gmail.com
Thu May 7 20:19:57 UTC 2015


On Thu, May 7, 2015 at 10:10 AM, Eliot Miranda <eliot.miranda at gmail.com>
wrote:

> Hi Levente,
>
> On Thu, May 7, 2015 at 9:34 AM, Eliot Miranda <eliot.miranda at gmail.com>
> wrote:
>
>> 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.
>>
>
> Ah, MCMethodDefinition class>>className: classString
> classIsMeta: metaBoolean
> selector: selectorString
> category: catString
> timeStamp: timeString
> source: sourceString
> ^ self instanceLike:
> (self new initializeWithClassName: classString
> classIsMeta: metaBoolean
> selector: selectorString
> category: catString
> timeStamp: timeString
> source: sourceString)
>
> this will share definitions, and given that I'm modifying definitions as
> part of the patch process I guess I could end up modifying a definition
> that was inadvertently shared.  I'm rewriting to avoid use of shared
> instances.  i.e. I will use MCMethodDefinition new initializeWithClassName
> ... instead of MCMethodDefinition className: ...
>

Ah, the issue is only that the bootstrap is confused by two packages with
the same version number, i.e. Collections.spur-ul.624
and Collections.spur-tfel.624.  Stupidly I didn't check before uploading
new versions of the Spur packages.  Forgive the noise.  But at least I know
what to fix now.




>
>
>>
>>>
>>>
>>> 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
>>
>
>
>
> --
> best,
> Eliot
>



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


More information about the Squeak-dev mailing list