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

Eliot Miranda eliot.miranda at gmail.com
Thu May 7 17:10:07 UTC 2015


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: ...


>
>>
>>
>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20150507/45fdc2e7/attachment.htm


More information about the Squeak-dev mailing list