[squeak-dev] The Trunk: Kernel-eem.1045.mcz
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Thu Oct 13 18:26:11 UTC 2016
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:instanceVariableNames:
> 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:uses: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>>variableDoubleByteSubclass: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>>variableDoubleWordSubclass: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:instanceVariableNames:
> 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:uses: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:variableByteSubclass:
> 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:variableDoubleByteSubclass:
> 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:variableDoubleWordSubclass:
> 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:variableWordSubclass:
> 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!
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20161013/d66b9be4/attachment-0001.htm
More information about the Squeak-dev
mailing list
|