[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