Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1139.mcz==================== Summary ====================
Name: Kernel-eem.1139
Author: eem
Time: 10 January 2018, 5:37:26.591853 pm
UUID: 54bd97b7-0152-4647-b109-78c294afc74e
Ancestors: Kernel-eem.1138
Add CompiledBlock>>pragmaAt:. Make the accessors that defer to the home mehtod use homeMehtod instaed of chaining through outerCode. The stack depth is one less as a result.
=============== Diff against Kernel-eem.1138 ===============
Item was changed:
----- Method: CompiledBlock>>encoderClass (in category 'accessing') -----
encoderClass
"Answer the encoder class that encoded the bytecodes in this method.
The sign flag bit is used by the VM to select a bytecode set. This formulation
may seem odd but this has to be fast, so no property probe unless needed."
^self header >= 0
ifTrue:
[PrimaryBytecodeSetEncoderClass]
ifFalse:
[PrimaryBytecodeSetEncoderClass == SecondaryBytecodeSetEncoderClass
ifTrue: "Support for testing prior to installing another set"
+ [(self homeMethod propertyValueAt: #encoderClass) ifNil: [SecondaryBytecodeSetEncoderClass]]
- [(self outerCode propertyValueAt: #encoderClass) ifNil: [SecondaryBytecodeSetEncoderClass]]
ifFalse:
[SecondaryBytecodeSetEncoderClass]]!
Item was changed:
----- Method: CompiledBlock>>holdsTempNames (in category 'source code management') -----
holdsTempNames
+ ^self homeMethod holdsTempNames!
- ^self outerCode holdsTempNames!
Item was changed:
----- Method: CompiledBlock>>methodClass (in category 'accessing') -----
methodClass
"Answer the class that I am installed in."
+ ^self homeMethod methodClass!
- | outerCodeOrMethodClassAssoc |
- outerCodeOrMethodClassAssoc := self outerCode.
- outerCodeOrMethodClassAssoc isVariableBinding ifTrue:
- [self assert: outerCodeOrMethodClassAssoc value isBehavior.
- ^outerCodeOrMethodClassAssoc value].
- ^outerCodeOrMethodClassAssoc methodClass!
Item was changed:
----- Method: CompiledBlock>>methodForDecompile (in category 'decompiling') -----
methodForDecompile
+ ^self homeMethod methodForDecompile!
- ^self outerCode methodForDecompile!
Item was changed:
----- Method: CompiledBlock>>methodNode (in category 'accessing') -----
methodNode
+ ^ self homeMethod methodNode!
- ^ self outerCode methodNode!
Item was added:
+ ----- Method: CompiledBlock>>pragmaAt: (in category 'accessing-pragmas & properties') -----
+ pragmaAt: aKey
+ "Answer the pragma with selector aKey, or nil if none."
+ ^self homeMethod pragmaAt: aKey!
Item was changed:
----- Method: CompiledBlock>>selector (in category 'accessing') -----
selector
+ ^ self homeMethod selector!
- ^ self outerCode selector!