[Vm-dev] VM Maker: VMMaker.oscog-cb.1741.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Mar 24 09:28:07 UTC 2016


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

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

Name: VMMaker.oscog-cb.1741
Author: cb
Time: 24 March 2016, 10:26:08.795 am
UUID: c7585fe1-9078-455c-be43-fd2944b8de9f
Ancestors: VMMaker.oscog-eem.1740

Rewrote identity primitive to check for forwarders only when the identity of objects is different.

I believe the previous version was buggy if the argument was a forwarder to an immediate.

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

Item was changed:
  ----- Method: CogObjectRepresentationForSpur>>genPrimitiveIdenticalOrNotIf: (in category 'primitive generators') -----
  genPrimitiveIdenticalOrNotIf: orNot
+ 	| jumpCmp comp |
- 	| jumpImmediate jumpCmp |
  	<var: #jumpCmp type: #'AbstractInstruction *'>
+ 	<var: #comp type: #'AbstractInstruction *'>
- 	<var: #jumpImmediate type: #'AbstractInstruction *'>
  	cogit genLoadArgAtDepth: 0 into: Arg0Reg.
+ 	comp := cogit CmpR: Arg0Reg R: ReceiverResultReg.
+ 	orNot
+ 		ifTrue: 
+ 			[ jumpCmp := cogit JumpZero: 0.
+ 			self genEnsureOopInRegNotForwarded: Arg0Reg scratchReg: TempReg jumpBackTo: comp ]
+ 		ifFalse: 
+ 			[ jumpCmp := cogit JumpNonZero: 0 ].
- 	jumpImmediate := self genJumpImmediate: Arg0Reg.
- 	self genEnsureObjInRegNotForwarded: Arg0Reg scratchReg: TempReg.
- 	jumpImmediate jmpTarget:
- 		(cogit CmpR: Arg0Reg R: ReceiverResultReg).
- 	jumpCmp := orNot
- 					ifTrue: [cogit JumpZero: 0]
- 					ifFalse: [cogit JumpNonZero: 0].
  	cogit genMoveTrueR: ReceiverResultReg.
  	cogit genPrimReturn.
+ 	jumpCmp jmpTarget: cogit Label.
+ 	orNot ifFalse: 
+ 		[ self genEnsureOopInRegNotForwarded: Arg0Reg scratchReg: TempReg jumpBackTo: comp ].
+ 	cogit genMoveFalseR: ReceiverResultReg.
- 	jumpCmp jmpTarget: (cogit genMoveFalseR: ReceiverResultReg).
  	cogit genPrimReturn.
+ 	^UnfailingPrimitive
+ !
- 	^UnfailingPrimitive!



More information about the Vm-dev mailing list