[Vm-dev] VM Maker: VMMaker.oscog-eem.2196.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Apr 18 02:13:57 UTC 2017
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2196.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2196
Author: eem
Time: 17 April 2017, 7:13:06.452145 pm
UUID: e6b24407-301d-4fef-9243-8e7765bb1ec7
Ancestors: VMMaker.oscog-eem.2195
Use genGetCompactClassIndexNonImmOf:into: in genPrimitiveHashMultiply so as to work on V3.
=============== Diff against VMMaker.oscog-eem.2195 ===============
Item was changed:
----- Method: SimpleStackBasedCogit>>genPrimitiveHashMultiply (in category 'primitive generators') -----
genPrimitiveHashMultiply
| highReg jmpFailImm jmpFailNonImm jmpNotSmallInt lowReg reenter |
jmpNotSmallInt := objectRepresentation genJumpNotSmallInteger: ReceiverResultReg.
objectRepresentation genConvertSmallIntegerToIntegerInReg: ReceiverResultReg.
reenter := self MoveR: ReceiverResultReg R: (highReg := Arg1Reg).
self
ArithmeticShiftRightCq: 14 R: highReg; "highReg := receiver bitShift: -14"
AndCq: 16383 R: ReceiverResultReg;
MoveR: ReceiverResultReg R: (lowReg := Arg0Reg); "lowReg := receiver bitAnd: 16383"
MoveCq: 16r260D R: TempReg;
MulR: TempReg R: ReceiverResultReg; "RRR := 16r260D * low"
MulR: TempReg R: highReg; "highReg := (16r260D * (receiver bitShift: -14))"
MoveCq: 16r0065 R: TempReg;
MulR: TempReg R: lowReg; "lowReg := 16r0065 * low"
AddR: lowReg R: highReg; "highReg := (16r260D * (receiver bitShift: -14)) + (16r0065 * low)"
MoveCq: 16384 R: TempReg;
MulR: TempReg R: highReg; "highReg := (16r260D * (receiver bitShift: -14)) + (16r0065 * low)"
AddR: highReg R: ReceiverResultReg;
AndCq: 16r0FFFFFFF R: ReceiverResultReg.
objectRepresentation genConvertIntegerToSmallIntegerInReg: ReceiverResultReg.
self RetN: 0.
jmpNotSmallInt jmpTarget: self Label.
jmpFailImm := objectRepresentation genJumpImmediate: ReceiverResultReg.
+ objectRepresentation genGetCompactClassIndexNonImmOf: ReceiverResultReg into: ClassReg.
- objectRepresentation genGetClassIndexOfNonImm: ReceiverResultReg into: ClassReg.
self CmpCq: ClassLargePositiveIntegerCompactIndex R: ClassReg.
jmpFailNonImm := self JumpNonZero: 0.
objectRepresentation genLoadSlot: 0 sourceReg: ReceiverResultReg destReg: ReceiverResultReg.
self Jump: reenter.
jmpFailImm jmpTarget: (jmpFailNonImm jmpTarget: self Label).
^0!
More information about the Vm-dev
mailing list