[Vm-dev] VM Maker: BytecodeSets.spur-eem.20.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Apr 1 00:20:43 UTC 2015
Eliot Miranda uploaded a new version of BytecodeSets to project VM Maker:
http://source.squeak.org/VMMaker/BytecodeSets.spur-eem.20.mcz
==================== Summary ====================
Name: BytecodeSets.spur-eem.20
Author: eem
Time: 31 March 2015, 5:20:37.942 pm
UUID: 99c1c437-29d1-4907-ae45-67885077ea1b
Ancestors: BytecodeSets.spur-eem.19
Redefine the SistaV1 super send bytecode to
encompass a directed super send for inlining
super sends in optimized methods where the
super send may be form a method inlined from
some superclass and hence /not/ the superclass
of the optimized method's mthod class.
=============== Diff against BytecodeSets.spur-eem.19 ===============
Item was changed:
BytecodeEncoder subclass: #EncoderForSistaV1
(excessive size, no diff calculated)
Item was added:
+ ----- Method: EncoderForSistaV1>>genSendDirectedSuper:numArgs: (in category 'bytecode generation') -----
+ genSendDirectedSuper: selectorLiteralIndex numArgs: nArgs
+ | extendedIndex |
+ (selectorLiteralIndex < 0 or: [selectorLiteralIndex > 65535]) ifTrue:
+ [^self outOfRangeError: 'selectorLiteralIndex' index: selectorLiteralIndex range: 0 to: 65535].
+ (nArgs < 0 or: [nArgs > 31]) ifTrue:
+ [^self outOfRangeError: 'numArgs' index: nArgs range: 0 to: 31 "!!!!"].
+ (extendedIndex := selectorLiteralIndex) > 31 ifTrue:
+ [self genUnsignedSingleExtendA: extendedIndex // 32.
+ extendedIndex := extendedIndex \\ 32].
+ "Bit 6 of the ExtB byte is the directed send flag. Bit 6 allows for future expansion to up to 255 args."
+ self genUnsignedSingleExtendB: nArgs // 8 + 64.
+ "235 11101011 iiiiijjj Send To Superclass Literal Selector #iiiii (+ Extend A * 32) with jjj (+ Extend B * 8) Arguments"
+ stream
+ nextPut: 235;
+ nextPut: nArgs \\ 8 + (extendedIndex * 8)!
More information about the Vm-dev
mailing list