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)!
vm-dev@lists.squeakfoundation.org