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

commits at source.squeak.org commits at source.squeak.org
Thu Jun 4 14:29:23 UTC 2015


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

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

Name: VMMaker.oscog-cb.1338
Author: cb
Time: 4 June 2015, 4:28:00.954 pm
UUID: 25cd5227-7a5f-466c-8e83-eb3533ccee1a
Ancestors: VMMaker.oscog-eem.1337

Fix the bug eliot reported where rcvrReg was nil in genEqualsEqualsnoBranch.

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

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>genEqualsEqualsNoBranchArgIsConstant:rcvrIsConstant:argReg:rcvrReg: (in category 'bytecode generator support') -----
  genEqualsEqualsNoBranchArgIsConstant: argIsConstant rcvrIsConstant: rcvrIsConstant argReg: argReg rcvrReg: rcvrReg
  	"Generates the machine code for #== in the case where the instruction is not followed by a branch"
+ 	| label jumpEqual jumpNotEqual resultReg |
- 	| label jumpEqual jumpNotEqual |
  	<var: #label type: #'AbstractInstruction *'>
  	<var: #jumpEqual type: #'AbstractInstruction *'>
  	<var: #jumpNotEqual type: #'AbstractInstruction *'>
  	label := self Label.
  	self genEqualsEqualsComparisonArgIsConstant: argIsConstant rcvrIsConstant: rcvrIsConstant argReg: argReg rcvrReg: rcvrReg.
  	self ssPop: 2.
+ 	resultReg := rcvrReg ifNil: [argReg ].
  	jumpEqual := self JumpZero: 0.
  	 argIsConstant ifFalse: [ objectRepresentation genEnsureOopInRegNotForwarded: argReg scratchReg: TempReg jumpBackTo: label ].
  	 rcvrIsConstant ifFalse: [ objectRepresentation genEnsureOopInRegNotForwarded: rcvrReg scratchReg: TempReg jumpBackTo: label ].
+ 	 self genMoveFalseR: resultReg.
- 	 self genMoveFalseR: rcvrReg.
  	 jumpNotEqual := self Jump: 0.
+ 	 jumpEqual jmpTarget: (self genMoveTrueR: resultReg).
- 	 jumpEqual jmpTarget: (self genMoveTrueR: rcvrReg).
  	 jumpNotEqual jmpTarget: self Label.
+ 	 self ssPushRegister: resultReg.
- 	 self ssPushRegister: rcvrReg.
  	 ^0!



More information about the Vm-dev mailing list