[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