[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