The Trunk: Collections.spur-nice.622.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
23 messages Options
12
Reply | Threaded
Open this post in threaded view
|

The Trunk: Collections.spur-nice.622.mcz

commits-2
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

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Eliot Miranda-2
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.

On Mon, May 4, 2015 at 10:46 AM, <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Chris Muller-3
On Mon, May 4, 2015 at 1:13 PM, Eliot Miranda <[hidden email]> 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.

I was having a similar thought just today because I needed an
up-to-date Spur image and thought about asking whether you'd like
someone to set that up as an automatic job, then realized, we just
need to release.

Which, we are.  We are not "not releasing", we _are_ releasing, its
just taking a bit longer than expected because there are still some
bugs and loose ends (unrelated to Marcel's work) still needing tied
up.  Maintaining the separate branch and the bootstrap is a hassle,
but it shouldn't be much longer.

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Nicolas Cellier


2015-05-04 20:24 GMT+02:00 Chris Muller <[hidden email]>:
On Mon, May 4, 2015 at 1:13 PM, Eliot Miranda <[hidden email]> 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.
>

I failed to sea why historical compilation of brace construct would cause such grief,
but I understand now, these are the changes of Levente relative to Character classification...

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

I was having a similar thought just today because I needed an
up-to-date Spur image and thought about asking whether you'd like
someone to set that up as an automatic job, then realized, we just
need to release.

Which, we are.  We are not "not releasing", we _are_ releasing, its
just taking a bit longer than expected because there are still some
bugs and loose ends (unrelated to Marcel's work) still needing tied
up.  Maintaining the separate branch and the bootstrap is a hassle,
but it shouldn't be much longer.




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Nicolas Cellier


2015-05-04 21:14 GMT+02:00 Nicolas Cellier <[hidden email]>:


2015-05-04 20:24 GMT+02:00 Chris Muller <[hidden email]>:
On Mon, May 4, 2015 at 1:13 PM, Eliot Miranda <[hidden email]> 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.
>

I failed to sea why historical compilation of brace construct would cause such grief,
hem, I see my English improving every day, but it's a long road...
 
but I understand now, these are the changes of Levente relative to Character classification...

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

I was having a similar thought just today because I needed an
up-to-date Spur image and thought about asking whether you'd like
someone to set that up as an automatic job, then realized, we just
need to release.

Which, we are.  We are not "not releasing", we _are_ releasing, its
just taking a bit longer than expected because there are still some
bugs and loose ends (unrelated to Marcel's work) still needing tied
up.  Maintaining the separate branch and the bootstrap is a hassle,
but it shouldn't be much longer.





Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Levente Uzonyi-2
In reply to this post by Eliot Miranda-2
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, <[hidden email]> 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
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Levente Uzonyi-2
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.

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, <[hidden email]> 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
>>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Eliot Miranda-2
In reply to this post by Levente Uzonyi-2


On Mon, May 4, 2015 at 1:41 PM, Levente Uzonyi <[hidden email]> 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.

Thanks, that got me unblocked.
 

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

The Monticello package patching part of the bootstrap creates corresponding update.spur updates.  Which specific update is the one that ensures safety?  I may have missed it through a bug.

BTW, I think the multiple ancestry that one ends up with in Spur packages, e.g. that Collections.spur-abc.123 inherits from both Collections.spur-xyz-122 and Collections.abc-123, causes issues for the update merge.



Levente



On Mon, May 4, 2015 at 10:46 AM, <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Eliot Miranda-2
In reply to this post by Levente Uzonyi-2


On Mon, May 4, 2015 at 1:55 PM, Levente Uzonyi <[hidden email]> 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.

I think the multiple ancestry that one ends up with in Spur packages, e.g. that Collections.spur-abc.123 inherits from both Collections.spur-xyz-122 and Collections.abc-123, causes issues for the update merge.  I wonder whether that could be the cause?



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, <[hidden email]> 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


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Tobias Pape
In reply to this post by Chris Muller-3

On 04.05.2015, at 20:24, Chris Muller <[hidden email]> wrote:

> On Mon, May 4, 2015 at 1:13 PM, Eliot Miranda <[hidden email]> 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.
>
> I was having a similar thought just today because I needed an
> up-to-date Spur image and thought about asking whether you'd like
> someone to set that up as an automatic job, then realized, we just
> need to release.
>
> Which, we are.  We are not "not releasing", we _are_ releasing, its
> just taking a bit longer than expected because there are still some
> bugs and loose ends (unrelated to Marcel's work) still needing tied
> up.  Maintaining the separate branch and the bootstrap is a hassle,
> but it shouldn't be much longer.

Just to mention: http://build.squeak.org/job/SqueakTrunk/ tells us that

a) we have 15 tests failing.

 KernelTests.Numbers.LargePositiveIntegerTest.testReciprocalModulo
 Tests.Dependencies.PackageDependencyTest.testToolBuilder
 Tests.Compiler.DecompilerTests.testDecompilerInClassesSAtoSM
 Tests.Compiler.ClosureCompilerTest.testSourceRangeAccessForBlueBookInjectInto
 Tests.Compiler.DecompilerTests.testDecompilerInClassesFNtoFZ
 Tests.Compiler.DecompilerTests.testDecompilerInClassesLAtoLM
 Tests.Exceptions.ExceptionTests.testHandlerFromActio
 Tests.Dependencies.PackageDependencyTest.testNetwork
 Tests.Dependencies.PackageDependencyTest.testPreferenceBrowser
 Tests.Release.ReleaseTest.testNoObsoleteClasses
 ToolsTests.Browser.BrowserTest.testSelectClassNamedPreservesPlace
 MultilingualTests.Display.FontTest.testParagraph
 MultilingualTests.Display.FontTest.testParagraphFallback
 SqueakSSL.Tests.SqueakSSLTest.testYahooOpenID
 CollectionsTests.Text.TextAttributesScanningTest.testPluggableTextAttribute


b) sometimes the current cog vm runs into a crash when executing TraitMethodDescriptionTest>>#testCategories
        (see http://build.squeak.org/job/SqueakTrunk/1413/console )

I'd rather have this to be the metric for the release…

Best regards
        -Tobias
Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Eliot Miranda-2


On Mon, May 4, 2015 at 3:10 PM, Tobias Pape <[hidden email]> wrote:

On 04.05.2015, at 20:24, Chris Muller <[hidden email]> wrote:

> On Mon, May 4, 2015 at 1:13 PM, Eliot Miranda <[hidden email]> 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.
>
> I was having a similar thought just today because I needed an
> up-to-date Spur image and thought about asking whether you'd like
> someone to set that up as an automatic job, then realized, we just
> need to release.
>
> Which, we are.  We are not "not releasing", we _are_ releasing, its
> just taking a bit longer than expected because there are still some
> bugs and loose ends (unrelated to Marcel's work) still needing tied
> up.  Maintaining the separate branch and the bootstrap is a hassle,
> but it shouldn't be much longer.

Just to mention: http://build.squeak.org/job/SqueakTrunk/ tells us that

a) we have 15 tests failing.

 KernelTests.Numbers.LargePositiveIntegerTest.testReciprocalModulo
 Tests.Dependencies.PackageDependencyTest.testToolBuilder
 Tests.Compiler.DecompilerTests.testDecompilerInClassesSAtoSM
 Tests.Compiler.ClosureCompilerTest.testSourceRangeAccessForBlueBookInjectInto
 Tests.Compiler.DecompilerTests.testDecompilerInClassesFNtoFZ
 Tests.Compiler.DecompilerTests.testDecompilerInClassesLAtoLM
 Tests.Exceptions.ExceptionTests.testHandlerFromActio
 Tests.Dependencies.PackageDependencyTest.testNetwork
 Tests.Dependencies.PackageDependencyTest.testPreferenceBrowser
 Tests.Release.ReleaseTest.testNoObsoleteClasses
 ToolsTests.Browser.BrowserTest.testSelectClassNamedPreservesPlace
 MultilingualTests.Display.FontTest.testParagraph
 MultilingualTests.Display.FontTest.testParagraphFallback
 SqueakSSL.Tests.SqueakSSLTest.testYahooOpenID
 CollectionsTests.Text.TextAttributesScanningTest.testPluggableTextAttribute


b) sometimes the current cog vm runs into a crash when executing TraitMethodDescriptionTest>>#testCategories
        (see http://build.squeak.org/job/SqueakTrunk/1413/console )

I'd rather have this to be the metric for the release…

and how can we get to zero defects if we keep on developing?
 

Best regards
        -Tobias



--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Levente Uzonyi-2
In reply to this post by Eliot Miranda-2
It seems to me that the tool which creates the .spur versions of the
packages is running in an updated non-spur Trunk image, and it somehow
added its own version of #isAlphaNumeric to Collections.spur-tfel.623.

The method in Collections.spur-tfel.623 is:

  isAlphaNumeric
  "Answer whether the receiver is a letter or a digit."

  self asInteger > 255 ifFalse: [ ^((ClassificationTable at: self asInteger + 1) bitAnd: AlphaNumericMask) > 0 ].
  ^self encodedCharSet isAlphaNumeric: self

While in Collections-tfel.623 it is:

  isAlphaNumeric
  "Answer whether the receiver is a letter or a digit."

  ^self encodedCharSet isAlphaNumeric: self

The version which got patched is from Collections-ul.628 (which merges
Collections-ul.625):

  isAlphaNumeric
  "Answer whether the receiver is a letter or a digit."

  value > 255 ifFalse: [ ^((ClassificationTable at: value + 1) bitAnd: AlphaNumericMask) > 0 ].
  ^self encodedCharSet isAlphaNumeric: self

If I'm right, then we can work around the problem by updating the current
methods in Trunk to check whether the AlphaNumericMask is initialized
(along with DigitBit and LetterMask). Then update the image which creates,
the .spur versions, and finally recreate the Collections.spur packages
starting from tfel-623.

Levente

On Mon, 4 May 2015, Eliot Miranda wrote:

>
>
> On Mon, May 4, 2015 at 1:55 PM, Levente Uzonyi <[hidden email]> 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.
>
>
> I think the multiple ancestry that one ends up with in Spur packages, e.g. that Collections.spur-abc.123 inherits from
> both Collections.spur-xyz-122 and Collections.abc-123, causes issues for the update merge.  I wonder whether that could be the cause?

Reply | Threaded
Open this post in threaded view
|

Re: Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Levente Uzonyi-2
Hi Eliot,

The workaround is in the Trunk, so if you think that it may help, then
please update your image (which creates the .spur versions), and recreate
the .spur versions starting from at least Collections.spur-tfel.623 (or
the .mcm which contains it).

Levente

On Tue, 5 May 2015, Levente Uzonyi wrote:

> It seems to me that the tool which creates the .spur versions of the packages
> is running in an updated non-spur Trunk image, and it somehow added its own
> version of #isAlphaNumeric to Collections.spur-tfel.623.
>
> The method in Collections.spur-tfel.623 is:
>
> isAlphaNumeric
> "Answer whether the receiver is a letter or a digit."
>
> self asInteger > 255 ifFalse: [ ^((ClassificationTable at:
> self asInteger + 1) bitAnd: AlphaNumericMask) > 0 ].
> ^self encodedCharSet isAlphaNumeric: self
>
> While in Collections-tfel.623 it is:
>
> isAlphaNumeric
> "Answer whether the receiver is a letter or a digit."
>
> ^self encodedCharSet isAlphaNumeric: self
>
> The version which got patched is from Collections-ul.628 (which merges
> Collections-ul.625):
>
> isAlphaNumeric
> "Answer whether the receiver is a letter or a digit."
>
> value > 255 ifFalse: [ ^((ClassificationTable at: value + 1)
> bitAnd: AlphaNumericMask) > 0 ].
> ^self encodedCharSet isAlphaNumeric: self
>
> If I'm right, then we can work around the problem by updating the current
> methods in Trunk to check whether the AlphaNumericMask is initialized (along
> with DigitBit and LetterMask). Then update the image which creates, the .spur
> versions, and finally recreate the Collections.spur packages starting from
> tfel-623.
>
> Levente
>
> On Mon, 4 May 2015, Eliot Miranda wrote:
>
>>
>>
>> On Mon, May 4, 2015 at 1:55 PM, Levente Uzonyi <[hidden email]> 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.
>>
>>
>> I think the multiple ancestry that one ends up with in Spur packages, e.g.
>> that Collections.spur-abc.123 inherits from
>> both Collections.spur-xyz-122 and Collections.abc-123, causes issues for
>> the update merge.  I wonder whether that could be the cause?

Reply | Threaded
Open this post in threaded view
|

Re: Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Karl Ramberg
I tried loading these changes manually but my image just crashes hard.

If I try to add instance variable 'value' to Character I just get a debugger and no option to continue.

Karl


On Wed, May 6, 2015 at 8:31 PM, Levente Uzonyi <[hidden email]> wrote:
Hi Eliot,

The workaround is in the Trunk, so if you think that it may help, then please update your image (which creates the .spur versions), and recreate the .spur versions starting from at least Collections.spur-tfel.623 (or the .mcm which contains it).

Levente


On Tue, 5 May 2015, Levente Uzonyi wrote:

It seems to me that the tool which creates the .spur versions of the packages is running in an updated non-spur Trunk image, and it somehow added its own version of #isAlphaNumeric to Collections.spur-tfel.623.

The method in Collections.spur-tfel.623 is:

        isAlphaNumeric
                "Answer whether the receiver is a letter or a digit."

                self asInteger > 255 ifFalse: [ ^((ClassificationTable at: self asInteger + 1) bitAnd: AlphaNumericMask) > 0 ].
                ^self encodedCharSet isAlphaNumeric: self

While in Collections-tfel.623 it is:

        isAlphaNumeric
                "Answer whether the receiver is a letter or a digit."

                ^self encodedCharSet isAlphaNumeric: self

The version which got patched is from Collections-ul.628 (which merges Collections-ul.625):

        isAlphaNumeric
                "Answer whether the receiver is a letter or a digit."

                value > 255 ifFalse: [ ^((ClassificationTable at: value + 1) bitAnd: AlphaNumericMask) > 0 ].
                ^self encodedCharSet isAlphaNumeric: self

If I'm right, then we can work around the problem by updating the current methods in Trunk to check whether the AlphaNumericMask is initialized (along with DigitBit and LetterMask). Then update the image which creates, the .spur versions, and finally recreate the Collections.spur packages starting from tfel-623.

Levente

On Mon, 4 May 2015, Eliot Miranda wrote:



On Mon, May 4, 2015 at 1:55 PM, Levente Uzonyi <[hidden email]> 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.


I think the multiple ancestry that one ends up with in Spur packages, e.g. that Collections.spur-abc.123 inherits from
both Collections.spur-xyz-122 and Collections.abc-123, causes issues for the update merge.  I wonder whether that could be the cause?






Reply | Threaded
Open this post in threaded view
|

Re: Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Tobias Pape

On 07.05.2015, at 14:01, karl ramberg <[hidden email]> wrote:

> I tried loading these changes manually but my image just crashes hard.
>
> If I try to add instance variable 'value' to Character I just get a debugger and no option to continue.
>
>

This may be because Character cannot have instance variables in Spur, IIRC…
Reply | Threaded
Open this post in threaded view
|

Re: Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Karl Ramberg
Then the Character changes must be changed
Instance variable value was added in Collections.spur-ul.584.mcz it seems like

On Thu, May 7, 2015 at 2:03 PM, Tobias Pape <[hidden email]> wrote:

On 07.05.2015, at 14:01, karl ramberg <[hidden email]> wrote:

> I tried loading these changes manually but my image just crashes hard.
>
> If I try to add instance variable 'value' to Character I just get a debugger and no option to continue.
>
>

This may be because Character cannot have instance variables in Spur, IIRC…



Reply | Threaded
Open this post in threaded view
|

Re: Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Levente Uzonyi-2
Before Spur Character has always had an instance variable named value.
Characters are immediate in Spur, so the Character class has no instance
variables there. If you browse Collections.spur-ul.584.mcz, you'll find
the following definition:

Magnitude immediateSubclass: #Character
  instanceVariableNames: ''
  classVariableNames: 'CharacterTable ClassificationTable DigitValues LetterBits LowercaseBit UppercaseBit'
  poolDictionaries: ''
  category: 'Collections-Strings'


Levente

On Thu, 7 May 2015, karl ramberg wrote:

> Then the Character changes must be changedInstance variable value was added in Collections.spur-ul.584.mcz it seems like
>
> On Thu, May 7, 2015 at 2:03 PM, Tobias Pape <[hidden email]> wrote:
>
>       On 07.05.2015, at 14:01, karl ramberg <[hidden email]> wrote:
>
>       > I tried loading these changes manually but my image just crashes hard.
>       >
>       > If I try to add instance variable 'value' to Character I just get a debugger and no option to continue.
>       >
>       >
>
>       This may be because Character cannot have instance variables in Spur, IIRC…
>
>
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Nicolas Cellier
Does that mean that current Spur update process is not robust to a further change of Character class definition? (like adding a class var for example)

2015-05-07 15:56 GMT+02:00 Levente Uzonyi <[hidden email]>:
Before Spur Character has always had an instance variable named value. Characters are immediate in Spur, so the Character class has no instance variables there. If you browse Collections.spur-ul.584.mcz, you'll find the following definition:

Magnitude immediateSubclass: #Character
        instanceVariableNames: ''
        classVariableNames: 'CharacterTable ClassificationTable DigitValues LetterBits LowercaseBit UppercaseBit'
        poolDictionaries: ''
        category: 'Collections-Strings'


Levente

On Thu, 7 May 2015, karl ramberg wrote:

Then the Character changes must be changedInstance variable value was added in Collections.spur-ul.584.mcz it seems like

On Thu, May 7, 2015 at 2:03 PM, Tobias Pape <[hidden email]> wrote:

      On 07.05.2015, at 14:01, karl ramberg <[hidden email]> wrote:

      > I tried loading these changes manually but my image just crashes hard.
      >
      > If I try to add instance variable 'value' to Character I just get a debugger and no option to continue.
      >
      >

      This may be because Character cannot have instance variables in Spur, IIRC…









Reply | Threaded
Open this post in threaded view
|

Re: Spur Bootstrap (was: Re: [squeak-dev] The Trunk: Collections.spur-nice.622.mcz)

Eliot Miranda-2


On Thu, May 7, 2015 at 8:48 AM, Nicolas Cellier <[hidden email]> wrote:
Does that mean that current Spur update process is not robust to a further change of Character class definition? (like adding a class var for example)

The Monticello package patcher is robust for class var and pool dictionary changes.  I think the image bootstrap is too.  But checking that it is is timeconsuming.  That's one major motivation behind the feature freeze.  I want to stop wasting cyclers on the bootstrap and progress to the full release where we're free to modify definitions as we see fit.



2015-05-07 15:56 GMT+02:00 Levente Uzonyi <[hidden email]>:
Before Spur Character has always had an instance variable named value. Characters are immediate in Spur, so the Character class has no instance variables there. If you browse Collections.spur-ul.584.mcz, you'll find the following definition:

Magnitude immediateSubclass: #Character
        instanceVariableNames: ''
        classVariableNames: 'CharacterTable ClassificationTable DigitValues LetterBits LowercaseBit UppercaseBit'
        poolDictionaries: ''
        category: 'Collections-Strings'


Levente

On Thu, 7 May 2015, karl ramberg wrote:

Then the Character changes must be changedInstance variable value was added in Collections.spur-ul.584.mcz it seems like

On Thu, May 7, 2015 at 2:03 PM, Tobias Pape <[hidden email]> wrote:

      On 07.05.2015, at 14:01, karl ramberg <[hidden email]> wrote:

      > I tried loading these changes manually but my image just crashes hard.
      >
      > If I try to add instance variable 'value' to Character I just get a debugger and no option to continue.
      >
      >

      This may be because Character cannot have instance variables in Spur, IIRC…













--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Collections.spur-nice.622.mcz

Eliot Miranda-2
In reply to this post by Levente Uzonyi-2
Hi Levente,

On Mon, May 4, 2015 at 1:55 PM, Levente Uzonyi <[hidden email]> 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, <[hidden email]> 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


12