[Vm-dev] VM Maker: VMMaker.oscog-eem.1897.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Jul 4 23:23:48 UTC 2016


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1897.mcz

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

Name: VMMaker.oscog-eem.1897
Author: eem
Time: 4 July 2016, 4:21:58.850141 pm
UUID: c3215ac9-9da7-4d9d-9f40-a6ef2eaaa861
Ancestors: VMMaker.oscog-cb.1896

Fix genJumpIsSmallIntegerValue:scratch: for all memory managers and hence fix SmallInteger minVal // -1.

=============== Diff against VMMaker.oscog-cb.1896 ===============

Item was changed:
  ----- Method: CogObjectRepresentationFor32BitSpur>>genJumpIsSmallIntegerValue:scratch: (in category 'compile abstract instructions') -----
  genJumpIsSmallIntegerValue: aRegister scratch: scratchReg
  	"Generate a test for aRegister containing an integer value in the SmallInteger range, and a jump if so, answering the jump.
  	 c.f. Spur32BitMemoryManager>>isIntegerValue:"
  	<returnTypeC: #'AbstractInstruction *'>
  	^cogit
  		MoveR: aRegister R: scratchReg;
+ 		LogicalShiftLeftCq: 1 R: scratchReg;
- 		ArithmeticShiftRightCq: 1 R: scratchReg;
  		XorR: aRegister R: scratchReg;
  		JumpGreaterOrEqual: 0!

Item was changed:
  ----- Method: CogObjectRepresentationFor64BitSpur>>genJumpIsSmallIntegerValue:scratch: (in category 'compile abstract instructions') -----
  genJumpIsSmallIntegerValue: aRegister scratch: scratchReg
  	"Generate a test for aRegister containing an integer value in the SmallInteger range, and a jump if so, answering the jump.
  	 c.f. Spur64BitMemoryManager>>isIntegerValue:"
  	<returnTypeC: #'AbstractInstruction *'>
  	^cogit
  		MoveR: aRegister R: scratchReg;
+ 		ArithmeticShiftRightCq: 63 - objectMemory numTagBits R: scratchReg;
- 		ArithmeticShiftRightCq: 64 - objectMemory numTagBits R: scratchReg;
  		AddCq: 1 R: scratchReg;
  		AndCq: 1 << (objectMemory numTagBits + 1) - 1 R: scratchReg; "sign and top numTags bits must be the same"
  		CmpCq: 1 R: scratchReg;
  		JumpLessOrEqual: 0!

Item was changed:
  ----- Method: CogObjectRepresentationForSqueakV3>>genJumpIsSmallIntegerValue:scratch: (in category 'compile abstract instructions') -----
  genJumpIsSmallIntegerValue: aRegister scratch: scratchReg
  	"Generate a test for aRegister containing an integer value in the SmallInteger range, and a jump if so, answering the jump.
  	 c.f. ObjectMemory>>isIntegerValue:"
  	<returnTypeC: #'AbstractInstruction *'>
  	^cogit
  		MoveR: aRegister R: scratchReg;
+ 		LogicalShiftLeftCq: 1 R: scratchReg;
- 		ArithmeticShiftRightCq: 1 R: scratchReg;
  		XorR: aRegister R: scratchReg;
  		JumpGreaterOrEqual: 0!



More information about the Vm-dev mailing list