[squeak-dev] The Trunk: Kernel-eem.1045.mcz

Eliot Miranda eliot.miranda at gmail.com
Thu Oct 13 22:15:28 UTC 2016


Thanks for the heads up, Nicolas, I hadn't noticed.  I'll merge asap.

On Thu, Oct 13, 2016 at 11:26 AM, Nicolas Cellier <
nicolas.cellier.aka.nice at gmail.com> wrote:

> Hi Eliot,
> did you see related changes in inbox?
>
> 2016-10-12 21:10 GMT+02:00 <commits at source.squeak.org>:
>
>> Eliot Miranda uploaded a new version of Kernel to project The Trunk:
>> http://source.squeak.org/trunk/Kernel-eem.1045.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Kernel-eem.1045
>> Author: eem
>> Time: 12 October 2016, 12:10:33.006651 pm
>> UUID: d91d38c6-bb5b-4fcd-a28b-1bdbc867a33e
>> Ancestors: Kernel-nice.1044
>>
>> Add support for creating DoubleByte (isShorts) and DoubleWord (isLongs)
>> variable classes.
>>
>> =============== Diff against Kernel-nice.1044 ===============
>>
>> Item was changed:
>>   ----- Method: Behavior>>isBytes (in category 'testing') -----
>>   isBytes
>> +       "Answer whether the receiver's instances have indexed 8-bit
>> integer instance variables.
>> -       "Answer whether the receiver has 8-bit instance variables.
>>          Above Cog Spur the class format is
>>                 <5 bits inst spec><16 bits inst size>
>>          where the 5-bit inst spec is
>>                         0       = 0 sized objects (UndefinedObject True
>> False et al)
>>                         1       = non-indexable objects with inst vars
>> (Point et al)
>>                         2       = indexable objects with no inst vars
>> (Array et al)
>>                         3       = indexable objects with inst vars
>> (MethodContext AdditionalMethodState et al)
>>                         4       = weak indexable objects with inst vars
>> (WeakArray et al)
>>                         5       = weak non-indexable objects with inst
>> vars (ephemerons) (Ephemeron)
>>                         6       = unused
>>                         7       = immediates (SmallInteger, Character)
>>                         8       = unused
>>                         9       = 64-bit indexable
>>                 10-11   = 32-bit indexable (Bitmap)
>>                 12-15   = 16-bit indexable
>>                 16-23   = 8-bit indexable
>>                 24-31   = compiled methods (CompiledMethod)"
>>         ^self instSpec >= 16!
>>
>> Item was added:
>> + ----- Method: Behavior>>isLongs (in category 'testing') -----
>> + isLongs
>> +       "Answer whether the receiver's instances have indexed 64-bit
>> integer instance variables.
>> +        Above Cog Spur the class format is
>> +               <5 bits inst spec><16 bits inst size>
>> +        where the 5-bit inst spec is
>> +                       0       = 0 sized objects (UndefinedObject True
>> False et al)
>> +                       1       = non-indexable objects with inst vars
>> (Point et al)
>> +                       2       = indexable objects with no inst vars
>> (Array et al)
>> +                       3       = indexable objects with inst vars
>> (MethodContext AdditionalMethodState et al)
>> +                       4       = weak indexable objects with inst vars
>> (WeakArray et al)
>> +                       5       = weak non-indexable objects with inst
>> vars (ephemerons) (Ephemeron)
>> +                       6       = unused
>> +                       7       = immediates (SmallInteger, Character)
>> +                       8       = unused
>> +                       9       = 64-bit indexable
>> +               10-11   = 32-bit indexable (Bitmap)
>> +               12-15   = 16-bit indexable
>> +               16-23   = 8-bit indexable
>> +               24-31   = compiled methods (CompiledMethod)"
>> +       ^self instSpec = 9!
>>
>> Item was added:
>> + ----- Method: Behavior>>isShorts (in category 'testing') -----
>> + isShorts
>> +       "Answer whether the receiver's instances have indexed 16-bit
>> integer instance variables.
>> +        Above Cog Spur the class format is
>> +               <5 bits inst spec><16 bits inst size>
>> +        where the 5-bit inst spec is
>> +                       0       = 0 sized objects (UndefinedObject True
>> False et al)
>> +                       1       = non-indexable objects with inst vars
>> (Point et al)
>> +                       2       = indexable objects with no inst vars
>> (Array et al)
>> +                       3       = indexable objects with inst vars
>> (MethodContext AdditionalMethodState et al)
>> +                       4       = weak indexable objects with inst vars
>> (WeakArray et al)
>> +                       5       = weak non-indexable objects with inst
>> vars (ephemerons) (Ephemeron)
>> +                       6       = unused
>> +                       7       = immediates (SmallInteger, Character)
>> +                       8       = unused
>> +                       9       = 64-bit indexable
>> +               10-11   = 32-bit indexable (Bitmap)
>> +               12-15   = 16-bit indexable
>> +               16-23   = 8-bit indexable
>> +               24-31   = compiled methods (CompiledMethod)"
>> +       ^self instSpec = 12!
>>
>> Item was changed:
>>   ----- Method: Behavior>>isWords (in category 'testing') -----
>>   isWords
>> +       "Answer whether the receiver's instances have indexed 32-bit
>> integer instance variables.
>> +        Above Cog Spur the class format is
>> +               <5 bits inst spec><16 bits inst size>
>> +        where the 5-bit inst spec is
>> +                       0       = 0 sized objects (UndefinedObject True
>> False et al)
>> +                       1       = non-indexable objects with inst vars
>> (Point et al)
>> +                       2       = indexable objects with no inst vars
>> (Array et al)
>> +                       3       = indexable objects with inst vars
>> (MethodContext AdditionalMethodState et al)
>> +                       4       = weak indexable objects with inst vars
>> (WeakArray et al)
>> +                       5       = weak non-indexable objects with inst
>> vars (ephemerons) (Ephemeron)
>> +                       6       = unused
>> +                       7       = immediates (SmallInteger, Character)
>> +                       8       = unused
>> +                       9       = 64-bit indexable
>> +               10-11   = 32-bit indexable (Bitmap)
>> +               12-15   = 16-bit indexable
>> +               16-23   = 8-bit indexable
>> +               24-31   = compiled methods (CompiledMethod)"
>> +       ^self instSpec = 10!
>> -       "Answer true if the receiver is made of 32-bit instance
>> variables."
>> -
>> -       ^self isBytes not!
>>
>> Item was changed:
>>   ----- Method: Class>>variableByteSubclass:in
>> stanceVariableNames:classVariableNames:poolDictionaries:category: (in
>> category 'subclass creation') -----
>>   variableByteSubclass: t instanceVariableNames: f
>>         classVariableNames: d poolDictionaries: s category: cat
>>         "This is the standard initialization message for creating a new
>> class as a
>>         subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 8-bit byte-sized nonpointer variables."
>> +       ^ClassBuilder new
>> -       have indexable byte-sized nonpointer variables."
>> -       ^(ClassBuilder new)
>>                 superclass: self
>>                 variableByteSubclass: t
>>                 instanceVariableNames: f
>>                 classVariableNames: d
>>                 poolDictionaries: s
>> +               category: cat!
>> -               category: cat
>> - !
>>
>> Item was changed:
>>   ----- Method: Class>>variableByteSubclass:us
>> es:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'subclass creation') -----
>>   variableByteSubclass: t uses: aTraitCompositionOrArray
>> instanceVariableNames: f
>>         classVariableNames: d poolDictionaries: s category: cat
>>         "This is the standard initialization message for creating a new
>> class as a
>>         subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 8-bit byte-sized nonpointer variables."
>> -       have indexable byte-sized nonpointer variables."
>>
>>         | newClass copyOfOldClass |
>>         copyOfOldClass := self copy.
>>         newClass := self
>>                 variableByteSubclass: t
>>                 instanceVariableNames: f
>>                 classVariableNames: d
>>                 poolDictionaries: s
>>                 category: cat.
>>
>>         newClass setTraitComposition: aTraitCompositionOrArray
>> asTraitComposition.
>>         SystemChangeNotifier uniqueInstance
>>                 classDefinitionChangedFrom: copyOfOldClass to: newClass.
>> +       ^newClass!
>> -       ^newClass
>> - !
>>
>> Item was added:
>> + ----- Method: Class>>variableDoubleByteSubcl
>> ass:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'subclass creation') -----
>> + variableDoubleByteSubclass: t instanceVariableNames: f
>> +       classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a
>> +       subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 16-bit double byte-sized nonpointer variables."
>> +       ^ClassBuilder new
>> +               superclass: self
>> +               variableDoubleByteSubclass: t
>> +               instanceVariableNames: f
>> +               classVariableNames: d
>> +               poolDictionaries: s
>> +               category: cat!
>>
>> Item was added:
>> + ----- Method: Class>>variableDoubleByteSubclass:uses:
>> instanceVariableNames:classVariableNames:poolDictionaries:category: (in
>> category 'subclass creation') -----
>> + variableDoubleByteSubclass: t uses: aTraitCompositionOrArray
>> instanceVariableNames: f
>> +       classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a
>> +       subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 16-bit double byte-sized nonpointer variables."
>> +
>> +       | newClass copyOfOldClass |
>> +       copyOfOldClass := self copy.
>> +       newClass := self
>> +               variableDoubleByteSubclass: t
>> +               instanceVariableNames: f
>> +               classVariableNames: d
>> +               poolDictionaries: s
>> +               category: cat.
>> +
>> +       newClass setTraitComposition: aTraitCompositionOrArray
>> asTraitComposition.
>> +       SystemChangeNotifier uniqueInstance
>> +               classDefinitionChangedFrom: copyOfOldClass to: newClass.
>> +       ^newClass!
>>
>> Item was added:
>> + ----- Method: Class>>variableDoubleWordSubcl
>> ass:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'subclass creation') -----
>> + variableDoubleWordSubclass: t instanceVariableNames: f
>> +       classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a
>> +       subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 64-bit word-sized nonpointer variables."
>> +       ^ClassBuilder new
>> +               superclass: self
>> +               variableDoubleWordSubclass: t
>> +               instanceVariableNames: f
>> +               classVariableNames: d
>> +               poolDictionaries: s
>> +               category: cat!
>>
>> Item was added:
>> + ----- Method: Class>>variableDoubleWordSubclass:uses:
>> instanceVariableNames:classVariableNames:poolDictionaries:category: (in
>> category 'subclass creation') -----
>> + variableDoubleWordSubclass: t uses: aTraitCompositionOrArray
>> instanceVariableNames: f
>> +       classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a
>> +       subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 64-bit word-sized nonpointer variables."
>> +
>> +       | newClass copyOfOldClass |
>> +       copyOfOldClass := self copy.
>> +       newClass := self
>> +               variableDoubleWordSubclass: t
>> +               instanceVariableNames: f
>> +               classVariableNames: d
>> +               poolDictionaries: s
>> +               category: cat.
>> +
>> +       newClass setTraitComposition: aTraitCompositionOrArray
>> asTraitComposition.
>> +       SystemChangeNotifier uniqueInstance
>> +               classDefinitionChangedFrom: copyOfOldClass to: newClass.
>> +       ^newClass!
>>
>> Item was changed:
>>   ----- Method: Class>>variableWordSubclass:in
>> stanceVariableNames:classVariableNames:poolDictionaries:category: (in
>> category 'subclass creation') -----
>>   variableWordSubclass: t instanceVariableNames: f
>>         classVariableNames: d poolDictionaries: s category: cat
>>         "This is the standard initialization message for creating a new
>> class as a
>>         subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 32-bit word-sized nonpointer variables."
>> +       ^ClassBuilder new
>> -       have indexable word-sized nonpointer variables."
>> -       ^(ClassBuilder new)
>>                 superclass: self
>>                 variableWordSubclass: t
>>                 instanceVariableNames: f
>>                 classVariableNames: d
>>                 poolDictionaries: s
>> +               category: cat!
>> -               category: cat
>> - !
>>
>> Item was changed:
>>   ----- Method: Class>>variableWordSubclass:us
>> es:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'subclass creation') -----
>>   variableWordSubclass: t uses: aTraitCompositionOrArray
>> instanceVariableNames: f
>>         classVariableNames: d poolDictionaries: s category: cat
>>         "This is the standard initialization message for creating a new
>> class as a
>>         subclass of an existing class (the receiver) in which the
>> subclass is to
>> +       have indexable 32-bit word-sized nonpointer variables."
>> -       have indexable word-sized nonpointer variables."
>>
>>         | newClass copyOfOldClass |
>>         copyOfOldClass := self copy.
>>         newClass := self
>>                 variableWordSubclass: t
>>                 instanceVariableNames: f
>>                 classVariableNames: d
>>                 poolDictionaries: s
>>                 category: cat.
>>
>>         newClass setTraitComposition: aTraitCompositionOrArray
>> asTraitComposition.
>>         SystemChangeNotifier uniqueInstance
>>                 classDefinitionChangedFrom: copyOfOldClass to: newClass.
>> +       ^newClass       !
>> -       ^newClass
>> - !
>>
>> Item was changed:
>>   ----- Method: ClassBuilder>>superclass:varia
>> bleByteSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'public') -----
>>   superclass: aClass
>> +       variableByteSubclass: t instanceVariableNames: f
>> -       variableByteSubclass: t instanceVariableNames: f
>>         classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a subclass of an
>> +        existing class in which the subclass is to have indexable 8-bit
>> byte-sized nonpointer variables."
>> -       "This is the standard initialization message for creating a new
>> class as a
>> -       subclass of an existing class in which the subclass is to
>> -       have indexable byte-sized nonpointer variables."
>>         | oldClassOrNil actualType env |
>> +       aClass instSize > 0
>> -       (aClass instSize > 0)
>>                 ifTrue: [^self error: 'cannot make a byte subclass of a
>> class with named fields'].
>> +       (aClass isVariable and: [aClass isBytes not])
>> +               ifTrue: [^self error: 'cannot make an 8-bit byte subclass
>> of a class with 16, 32 or 64 bit fields'].
>> -       (aClass isVariable and: [aClass isWords])
>> -               ifTrue: [^self error: 'cannot make a byte subclass of a
>> class with word fields'].
>>         (aClass isVariable and: [aClass isPointers])
>>                 ifTrue: [^self error: 'cannot make a byte subclass of a
>> class with pointer fields'].
>>         oldClassOrNil := aClass environment at: t ifAbsent:[nil].
>>         actualType := (oldClassOrNil notNil
>>                                    and: [oldClassOrNil typeOfClass ==
>> #compiledMethod])
>>                                         ifTrue: [#compiledMethod]
>>                                         ifFalse: [#bytes].
>>         env := CurrentEnvironment signal ifNil: [aClass environment].
>>         ^self
>>                 name: t
>>                 inEnvironment: env
>>                 subclassOf: aClass
>>                 type: actualType
>>                 instanceVariableNames: f
>>                 classVariableNames: d
>>                 poolDictionaries: s
>>                 category: cat!
>>
>> Item was added:
>> + ----- Method: ClassBuilder>>superclass:varia
>> bleDoubleByteSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'public') -----
>> + superclass: aClass
>> +       variableDoubleByteSubclass: t instanceVariableNames: f
>> +       classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a subclass of an
>> +        existing class in which the subclass is to have indexable
>> 16-bit-sized nonpointer variables."
>> +       | oldClassOrNil env |
>> +       aClass instSize > 0
>> +               ifTrue: [^self error: 'cannot make a byte subclass of a
>> class with named fields'].
>> +       (aClass isVariable and: [aClass isShorts not])
>> +               ifTrue: [^self error: 'cannot make a 16-bit short
>> subclass of a class with 8, 32 or 64 bit fields'].
>> +       (aClass isVariable and: [aClass isPointers])
>> +               ifTrue: [^self error: 'cannot make a byte subclass of a
>> class with pointer fields'].
>> +       oldClassOrNil := aClass environment at: t ifAbsent:[nil].
>> +       env := CurrentEnvironment signal ifNil: [aClass environment].
>> +       ^self
>> +               name: t
>> +               inEnvironment: env
>> +               subclassOf: aClass
>> +               type: #shorts
>> +               instanceVariableNames: f
>> +               classVariableNames: d
>> +               poolDictionaries: s
>> +               category: cat!
>>
>> Item was added:
>> + ----- Method: ClassBuilder>>superclass:varia
>> bleDoubleWordSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'public') -----
>> + superclass: aClass
>> +       variableDoubleWordSubclass: t instanceVariableNames: f
>> +       classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a subclass of an
>> +        existing class in which the subclass is to have indexable
>> 16-bit-sized nonpointer variables."
>> +       | oldClassOrNil env |
>> +       aClass instSize > 0
>> +               ifTrue: [^self error: 'cannot make a byte subclass of a
>> class with named fields'].
>> +       (aClass isVariable and: [aClass isLongs not])
>> +               ifTrue: [^self error: 'cannot make a 64-bit long subclass
>> of a class with 8, 16 or 32 bit fields'].
>> +       (aClass isVariable and: [aClass isPointers])
>> +               ifTrue: [^self error: 'cannot make a byte subclass of a
>> class with pointer fields'].
>> +       oldClassOrNil := aClass environment at: t ifAbsent:[nil].
>> +       env := CurrentEnvironment signal ifNil: [aClass environment].
>> +       ^self
>> +               name: t
>> +               inEnvironment: env
>> +               subclassOf: aClass
>> +               type: #longs
>> +               instanceVariableNames: f
>> +               classVariableNames: d
>> +               poolDictionaries: s
>> +               category: cat!
>>
>> Item was changed:
>>   ----- Method: ClassBuilder>>superclass:varia
>> bleWordSubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
>> (in category 'public') -----
>>   superclass: aClass
>>         variableWordSubclass: t instanceVariableNames: f
>>         classVariableNames: d poolDictionaries: s category: cat
>> +       "This is the standard initialization message for creating a new
>> class as a subclass of an
>> +        existing class in which the subclass is to have indexable 32-bit
>> word-sized nonpointer variables."
>> -       "This is the standard initialization message for creating a new
>> class as a
>> -       subclass of an existing class in which the subclass is to
>> -       have indexable word-sized nonpointer variables."
>>         | env |
>> +       aClass instSize > 0
>> -       (aClass instSize > 0)
>>                 ifTrue: [^self error: 'cannot make a word subclass of a
>> class with named fields'].
>> +       (aClass isVariable and: [aClass isWords not])
>> +               ifTrue: [^self error: 'cannot make a 32-bit word subclass
>> of a class with 8, 16 or 64 bit fields'].
>> -       (aClass isVariable and: [aClass isBytes])
>> -               ifTrue: [^self error: 'cannot make a word subclass of a
>> class with byte fields'].
>>         (aClass isVariable and: [aClass isPointers])
>>                 ifTrue: [^self error: 'cannot make a word subclass of a
>> class with pointer fields'].
>>         env := CurrentEnvironment signal ifNil: [aClass environment].
>>         ^self
>>                 name: t
>>                 inEnvironment: env
>>                 subclassOf: aClass
>>                 type: #words
>>                 instanceVariableNames: f
>>                 classVariableNames: d
>>                 poolDictionaries: s
>>                 category: cat!
>>
>>
>>
>
>
>
>


-- 
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20161013/59a2026d/attachment.htm


More information about the Squeak-dev mailing list