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