[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