[Vm-dev] VM Maker: BytecodeSets.spur-cb.24.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Apr 1 17:35:10 UTC 2015
ClementBera uploaded a new version of BytecodeSets to project VM Maker:
http://source.squeak.org/VMMaker/BytecodeSets.spur-cb.24.mcz
==================== Summary ====================
Name: BytecodeSets.spur-cb.24
Author: cb
Time: 1 April 2015, 10:35:05.836 am
UUID: 552f5804-99ea-47b6-ab5c-a6556e7a9cc3
Ancestors: BytecodeSets.spur-cb.23
fix two encodings bugs:
- popIntoArray not using the correct byte
- some sends not using the correct byte.
=============== Diff against BytecodeSets.spur-cb.23 ===============
Item was changed:
----- Method: EncoderForSistaV1>>genPushConsArray: (in category 'bytecode generation') -----
genPushConsArray: size
(size < 0 or: [size > 127]) ifTrue:
[^self outOfRangeError: 'size' index: size range: 0 to: 127].
+ "231 11100111 jkkkkkkk Push (Array new: kkkkkkk) (j = 0)
- "233 11101001 jkkkkkkk Push (Array new: kkkkkkk) (j = 0)
& Pop kkkkkkk elements into: (Array new: kkkkkkk) (j = 1)"
stream
+ nextPut: 231;
- nextPut: 233;
nextPut: size + 128!
Item was changed:
----- Method: EncoderForSistaV1>>genSend:numArgs: (in category 'bytecode generation') -----
genSend: selectorLiteralIndex numArgs: nArgs
| extendedIndex extendedNArgs |
(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 "!!!!"].
(selectorLiteralIndex < 16 and: [nArgs < 3]) ifTrue:
["128-143 1000 iiii Send Literal Selector #iiii With 0 Argument
144-159 1001 iiii Send Literal Selector #iiii With 1 Arguments
160-175 1010 iiii Send Literal Selector #iiii With 2 Arguments"
stream nextPut: 128 + (nArgs * 16) + selectorLiteralIndex.
^self].
(extendedIndex := selectorLiteralIndex) > 31 ifTrue:
[self genUnsignedSingleExtendA: extendedIndex // 32.
extendedIndex := extendedIndex \\ 32].
(extendedNArgs := nArgs) > 7 ifTrue:
[self genUnsignedSingleExtendB: extendedNArgs // 8.
extendedNArgs := extendedNArgs \\ 8].
"234 11101010 i i i i i j j j Send Literal Selector #iiiii (+ Extend A * 32) with jjj (+ Extend B * 8) Arguments"
stream
+ nextPut: 234;
- nextPut: 238;
nextPut: extendedNArgs + (extendedIndex * 8)!
More information about the Vm-dev
mailing list