[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