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

commits at source.squeak.org commits at source.squeak.org
Sun Mar 19 05:20:34 UTC 2017


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

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

Name: VMMaker.oscog-eem.2166
Author: eem
Time: 18 March 2017, 10:19:36.999362 pm
UUID: 7471b7ee-fa31-444f-bc3d-dee21ee090f2
Ancestors: VMMaker.oscog-eem.2165

oops.

=============== Diff against VMMaker.oscog-eem.2165 ===============

Item was changed:
  ----- Method: CogObjectRepresentationFor32BitSpur>>genPrimitiveIdentityHash (in category 'primitive generators') -----
  genPrimitiveIdentityHash
  	"Arguably we should fail for immediates, but so far no one has complained, so..."
  	| jumpImm jumpSI jumpNotSet ret |
  	<var: #jumpSI type: #'AbstractInstruction *'>
  	<var: #jumpImm type: #'AbstractInstruction *'>
  	<var: #jumpNotSet type: #'AbstractInstruction *'>
  	jumpImm := self genJumpImmediate: ReceiverResultReg.
  	self genGetHashFieldNonImmOf: ReceiverResultReg asSmallIntegerInto: TempReg.
  	cogit CmpCq: ConstZero R: TempReg.
  	jumpNotSet := cogit JumpZero: 0.
  	cogit MoveR: TempReg R: ReceiverResultReg.
  	ret := cogit genPrimReturn.
  	jumpImm jmpTarget: cogit Label.
  	jumpSI := self genJumpSmallInteger: ReceiverResultReg.
  	jumpSI jmpTarget: ret.
  	self genConvertCharacterToSmallIntegerInReg: ReceiverResultReg.
  	cogit Jump: ret.
  	jumpNotSet jmpTarget: cogit Label.
  	"For non-behaviors we can call ceNewHash to assign a fresh hash.
  	 For behaviors we must fail into the interpreter primitive to enter the receiver into the class table."
+ 	cogit getPrimitiveIndex = 75 ifFalse:
- 	cogit primitiveIndex = 75 ifFalse:
  		[^0].
  	cogit
  		CallRT: ceNewHashTrampoline;
  		genPrimReturn.
  	^UnfailingPrimitive!

Item was changed:
  ----- Method: CogObjectRepresentationFor64BitSpur>>genPrimitiveIdentityHash (in category 'primitive generators') -----
  genPrimitiveIdentityHash
  	"Arguably we should fail for immediates, but so far no one has complained, so..."
  	| jumpImm jumpNotSet jumpNotCharacter ret |
  	<var: #jumpImm type: #'AbstractInstruction *'>
  	<var: #jumpNotSet type: #'AbstractInstruction *'>
  	<var: #jumpNotCharacter type: #'AbstractInstruction *'>
  	jumpImm := self genJumpImmediate: ReceiverResultReg. "uses TstCqR"
  	self genGetHashFieldNonImmOf: ReceiverResultReg asSmallIntegerInto: TempReg.
  	cogit CmpCq: ConstZero R: TempReg.
  	jumpNotSet := cogit JumpZero: 0.
  	cogit MoveR: TempReg R: ReceiverResultReg.
  	ret := cogit genPrimReturn.
  	jumpImm jmpTarget: (cogit AndCq: objectMemory tagMask R: ReceiverResultReg R: TempReg).
  	cogit CmpCq: objectMemory characterTag R: TempReg.
  	jumpNotCharacter := cogit JumpNonZero: 0.
  	self genConvertCharacterToSmallIntegerInReg: ReceiverResultReg.
  	ret := cogit genPrimReturn.
  	jumpNotCharacter jmpTarget: (cogit CmpCq: objectMemory smallFloatTag R: TempReg).
  	cogit JumpNonZero: ret.
  	self genConvertSmallFloatToSmallFloatHashAsIntegerInReg: ReceiverResultReg scratch: TempReg.
  	cogit genPrimReturn.
  	jumpNotSet jmpTarget: cogit Label.
  	"For non-behaviors we can call ceNewHash to assign a fresh hash.
  	 For behaviors we must fail into the interpreter primitive to enter the receiver into the class table."
+ 	cogit getPrimitiveIndex = 75 ifFalse:
- 	cogit primitiveIndex = 75 ifFalse:
  		[^0].
  	cogit
  		CallRT: ceNewHashTrampoline;
  		genPrimReturn.
  	^UnfailingPrimitive!



More information about the Vm-dev mailing list