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

commits at source.squeak.org commits at source.squeak.org
Sat Jun 7 21:44:24 UTC 2014


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

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

Name: VMMaker.oscog-eem.764
Author: eem
Time: 7 June 2014, 2:41:42.434 pm
UUID: 74cab020-3391-46e3-9cac-b85303b8c1a4
Ancestors: VMMaker.oscog-eem.763

Correct some decls in genEnsureOopInRegNotForwarded:scratchReg:

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

Item was changed:
  ----- Method: CogObjectRepresentationForSpur>>genEnsureOopInRegNotForwarded:scratchReg: (in category 'compile abstract instructions') -----
  genEnsureOopInRegNotForwarded: reg scratchReg: scratch
  	"Make sure that the oop in reg is not forwarded."
  	| loop okImm okObj |
+ 	<var: #okImm type: #'AbstractInstruction *'>
+ 	<var: #okObj type: #'AbstractInstruction *'>
- 	<var: #ok type: #'AbstractInstruction *'>
  	<var: #loop type: #'AbstractInstruction *'>
  	self assert: reg ~= scratch.
  	loop := cogit MoveR: reg R: scratch.
  	okImm := self genJumpImmediateInScratchReg: scratch.
  	"notionally
  		self genGetClassIndexOfNonImm: reg into: scratch.
  		cogit CmpCq: objectMemory isForwardedObjectClassIndexPun R: TempReg.
  	 but the following is an instruction shorter:"
  	cogit MoveMw: 0 r: reg R: scratch.
  	cogit
  		AndCq: objectMemory classIndexMask - objectMemory isForwardedObjectClassIndexPun
  		R: scratch.
  	okObj := cogit JumpNonZero:  0.
  	self genLoadSlot: 0 sourceReg: reg destReg: reg.
  	cogit Jump: loop.
  	okImm jmpTarget: (okObj jmpTarget: cogit Label).
  	^0!



More information about the Vm-dev mailing list