[Vm-dev] VM Maker: BytecodeSets.spur-cb.36.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Apr 16 16:48:04 UTC 2015


Eliot Miranda uploaded a new version of BytecodeSets to project VM Maker:
http://source.squeak.org/VMMaker/BytecodeSets.spur-cb.36.mcz

==================== Summary ====================

Name: BytecodeSets.spur-cb.36
Author: cb
Time: 16 April 2015, 9:47:59.982 am
UUID: 9533051a-235e-483a-9940-46b7961c2499
Ancestors: BytecodeSets.spur-cb.35

Error by 1 in the jump distance generation

=============== Diff against BytecodeSets.spur-cb.35 ===============

Item was changed:
  ----- Method: EncoderForSistaV1>>genBranchIfNotInstanceOf:distance: (in category 'bytecode generation') -----
  genBranchIfNotInstanceOf: literalIndex distance: distance
  	"254		11111110	kkkkkkkk	jjjjjjjj		branch If Not Instance Of Behavior/Array Of Behavior kkkkkkkk (+ Extend A * 256, where Extend A >= 0) distance jjjjjjjj (+ Extend B * 256, where Extend B >= 0)"
  							
  	| extendedIndex extendedDistance |
  	(literalIndex < 0 or: [literalIndex > 65535]) ifTrue:
  		[^self outOfRangeError: 'index' index: literalIndex range: 0 to: 65536].
  	(distance < 1 or: [distance > 32767]) ifTrue:
  		[^self outOfRangeError: 'distance' index: distance range: 0 to: 32767].
  	(extendedIndex := literalIndex) > 255 ifTrue:
  		[self genUnsignedSingleExtendA: extendedIndex // 256.
  		 extendedIndex := extendedIndex \\ 256].
+ 	(extendedDistance := distance) > 255 ifTrue:
- 	(extendedDistance := distance - 1) > 254 ifTrue:
  		[self genUnsignedSingleExtendB: (distance bitShift: -8).
  		extendedDistance := distance bitAnd: 255].
  	
  	stream
  		nextPut: 236;
  		nextPut: extendedIndex;
  		nextPut: extendedDistance!



More information about the Vm-dev mailing list