[Vm-dev] VM Maker: VMMaker.oscog-eem.1559.mcz
commits at source.squeak.org
commits at source.squeak.org
Sun Dec 6 01:46:24 UTC 2015
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1559.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.1559
Author: eem
Time: 5 December 2015, 5:44:41.199 pm
UUID: 52385182-ad6d-4bdc-975a-7328fd81b6da
Ancestors: VMMaker.oscog-eem.1558
Spur Cogit: Use the correct jump for bounds checking generated objectAt:
=============== Diff against VMMaker.oscog-eem.1558 ===============
Item was changed:
----- Method: CogObjectRepresentationForSpur>>genInnerPrimitiveObjectAt: (in category 'primitive generators') -----
genInnerPrimitiveObjectAt: retNOffset
| headerReg
jumpBadIndex jumpNotCogMethod jumpBounds jumpNotHeaderIndex |
<var: #jumpBounds type: #'AbstractInstruction *'>
<var: #jumpBadIndex type: #'AbstractInstruction *'>
<var: #jumpNotCogMethod type: #'AbstractInstruction *'>
<var: #jumpNotHeaderIndex type: #'AbstractInstruction *'>
jumpBadIndex := self genJumpNotSmallInteger: Arg0Reg.
"get header into Arg1Reg..."
cogit MoveMw: objectMemory baseHeaderSize r: ReceiverResultReg R: (headerReg := Arg1Reg).
jumpNotCogMethod := self genJumpSmallInteger: headerReg.
cogit MoveMw: (cogit offset: CogMethod of: #methodHeader) r: headerReg R: headerReg.
jumpNotCogMethod jmpTarget: (cogit
CmpCq: (objectMemory integerObjectOf: 1) R: Arg0Reg).
jumpNotHeaderIndex := cogit JumpNonZero: 0.
cogit
MoveR: headerReg R: ReceiverResultReg;
RetN: retNOffset.
jumpNotHeaderIndex jmpTarget: (cogit
AndCq: (objectMemory integerObjectOf: coInterpreter alternateHeaderNumLiteralsMask) R: headerReg).
cogit
SubCq: (objectMemory integerObjectOf: 1) - objectMemory smallIntegerTag R: Arg0Reg;
CmpR: headerReg R: Arg0Reg.
+ jumpBounds := cogit JumpAbove: 0.
- jumpBounds := cogit JumpAboveOrEqual: 0.
self genConvertSmallIntegerToIntegerInReg: Arg0Reg.
cogit
AddCq: objectMemory baseHeaderSize >> objectMemory shiftForWord R: Arg0Reg;
MoveXwr: Arg0Reg R: ReceiverResultReg R: ReceiverResultReg;
RetN: retNOffset.
jumpBounds jmpTarget: (cogit
AddCq: (objectMemory integerObjectOf: 1) - objectMemory smallIntegerTag R: Arg0Reg).
jumpBadIndex jmpTarget: cogit Label.
^CompletePrimitive!
More information about the Vm-dev
mailing list