[Vm-dev] VM Maker: VMMaker.oscog-eem.2551.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Sep 5 21:42:38 UTC 2019
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2551.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2551
Author: eem
Time: 5 September 2019, 2:42:22.994572 pm
UUID: b12b3e65-a8cc-4579-900c-ebf69370c2b5
Ancestors: VMMaker.oscog-eem.2550, VMMaker.oscog-nice.2550
Since we have a macro for primitiveDoMixedArithmetic there is no need for the getPrimitiveDoMixedArithmetic accessor. Just mark primitiveDoMixedArithmetic qwith <api> and the code generator does the right thing (primitiveDoMixedArithmetic macro will be in cointerp.h).
=============== Diff against VMMaker.oscog-eem.2550 ===============
Item was removed:
- ----- Method: CoInterpreter>>getPrimitiveDoMixedArithmetic (in category 'cog jit support') -----
- getPrimitiveDoMixedArithmetic
- <api>
- ^primitiveDoMixedArithmetic!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveEqual (in category 'primitive generators') -----
genPrimitiveEqual
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self
genSmallIntegerComparison: JumpZero
orDoubleComparison: #JumpFPEqual:]
ifFalse: [self genSmallIntegerComparison: JumpZero]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatAdd (in category 'primitive generators') -----
genPrimitiveFloatAdd
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleArithmetic: AddRdRd preOpCheck: nil]
ifFalse: [self genPureDoubleArithmetic: AddRdRd preOpCheck: nil]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatDivide (in category 'primitive generators') -----
genPrimitiveFloatDivide
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleArithmetic: DivRdRd preOpCheck: #genDoubleFailIfZeroArgRcvr:arg:]
ifFalse: [self genPureDoubleArithmetic: DivRdRd preOpCheck: #genDoubleFailIfZeroArgRcvr:arg:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatEqual (in category 'primitive generators') -----
genPrimitiveFloatEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPEqual:]
ifFalse: [self genPureDoubleComparison: #JumpFPEqual:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatGreaterOrEqual (in category 'primitive generators') -----
genPrimitiveFloatGreaterOrEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPGreaterOrEqual:]
ifFalse: [self genPureDoubleComparison: #JumpFPGreaterOrEqual:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatGreaterThan (in category 'primitive generators') -----
genPrimitiveFloatGreaterThan
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPGreater:]
ifFalse: [self genPureDoubleComparison: #JumpFPGreater:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatLessOrEqual (in category 'primitive generators') -----
genPrimitiveFloatLessOrEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPLessOrEqual:]
ifFalse: [self genPureDoubleComparison: #JumpFPLessOrEqual:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatLessThan (in category 'primitive generators') -----
genPrimitiveFloatLessThan
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPLess:]
ifFalse: [self genPureDoubleComparison: #JumpFPLess:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatMultiply (in category 'primitive generators') -----
genPrimitiveFloatMultiply
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleArithmetic: MulRdRd preOpCheck: nil]
ifFalse: [self genPureDoubleArithmetic: MulRdRd preOpCheck: nil]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatNotEqual (in category 'primitive generators') -----
genPrimitiveFloatNotEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPNotEqual:]
ifFalse: [self genPureDoubleComparison: #JumpFPNotEqual:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveFloatSubtract (in category 'primitive generators') -----
genPrimitiveFloatSubtract
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleArithmetic: SubRdRd preOpCheck: nil]
ifFalse: [self genPureDoubleArithmetic: SubRdRd preOpCheck: nil]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveGreaterOrEqual (in category 'primitive generators') -----
genPrimitiveGreaterOrEqual
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self
genSmallIntegerComparison: JumpGreaterOrEqual
orDoubleComparison: #JumpFPGreaterOrEqual:]
ifFalse: [self genSmallIntegerComparison: JumpGreaterOrEqual]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveGreaterThan (in category 'primitive generators') -----
genPrimitiveGreaterThan
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self
genSmallIntegerComparison: JumpGreater
orDoubleComparison: #JumpFPGreater:]
ifFalse: [self genSmallIntegerComparison: JumpGreater]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveLessOrEqual (in category 'primitive generators') -----
genPrimitiveLessOrEqual
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self
genSmallIntegerComparison: JumpLessOrEqual
orDoubleComparison: #JumpFPLessOrEqual:]
ifFalse: [self genSmallIntegerComparison: JumpLessOrEqual]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveLessThan (in category 'primitive generators') -----
genPrimitiveLessThan
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self
genSmallIntegerComparison: JumpLess
orDoubleComparison: #JumpFPLess:]
ifFalse: [self genSmallIntegerComparison: JumpLess]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveNotEqual (in category 'primitive generators') -----
genPrimitiveNotEqual
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self
genSmallIntegerComparison: JumpNonZero
orDoubleComparison: #JumpFPNotEqual:]
ifFalse: [self genSmallIntegerComparison: JumpNonZero]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatAdd (in category 'primitive generators') -----
genPrimitiveSmallFloatAdd
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatArithmetic: AddRdRd preOpCheck: nil]
ifFalse: [self genPureSmallFloatArithmetic: AddRdRd preOpCheck: nil]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatDivide (in category 'primitive generators') -----
genPrimitiveSmallFloatDivide
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatArithmetic: DivRdRd preOpCheck: #genDoubleFailIfZeroArgRcvr:arg:]
ifFalse: [self genPureSmallFloatArithmetic: DivRdRd preOpCheck: #genDoubleFailIfZeroArgRcvr:arg:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatEqual (in category 'primitive generators') -----
genPrimitiveSmallFloatEqual
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatComparison: #JumpFPEqual: orIntegerComparison: JumpZero]
ifFalse: [self genPureSmallFloatComparison: #JumpFPEqual:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatGreaterOrEqual (in category 'primitive generators') -----
genPrimitiveSmallFloatGreaterOrEqual
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatComparison: #JumpFPGreaterOrEqual: orIntegerComparison: JumpGreaterOrEqual ]
ifFalse: [self genPureSmallFloatComparison: #JumpFPGreaterOrEqual: ]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatGreaterThan (in category 'primitive generators') -----
genPrimitiveSmallFloatGreaterThan
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatComparison: #JumpFPGreater: orIntegerComparison: JumpGreater ]
ifFalse: [self genPureSmallFloatComparison: #JumpFPGreater: ]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatLessOrEqual (in category 'primitive generators') -----
genPrimitiveSmallFloatLessOrEqual
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatComparison: #JumpFPLessOrEqual: orIntegerComparison: JumpLessOrEqual ]
ifFalse: [self genPureSmallFloatComparison: #JumpFPLessOrEqual: ]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatLessThan (in category 'primitive generators') -----
genPrimitiveSmallFloatLessThan
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatComparison: #JumpFPLess: orIntegerComparison: JumpLess ]
ifFalse: [self genPureSmallFloatComparison: #JumpFPLess: ]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatMultiply (in category 'primitive generators') -----
genPrimitiveSmallFloatMultiply
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatArithmetic: MulRdRd preOpCheck: nil]
ifFalse: [self genPureSmallFloatArithmetic: MulRdRd preOpCheck: nil]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatNotEqual (in category 'primitive generators') -----
genPrimitiveSmallFloatNotEqual
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatComparison: #JumpFPNotEqual: orIntegerComparison: JumpNonZero]
ifFalse: [self genPureSmallFloatComparison: #JumpFPNotEqual:]!
Item was changed:
----- Method: CogObjectRepresentation>>genPrimitiveSmallFloatSubtract (in category 'primitive generators') -----
genPrimitiveSmallFloatSubtract
<option: #Spur64BitMemoryManager>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genSmallFloatArithmetic: SubRdRd preOpCheck: nil]
ifFalse: [self genPureSmallFloatArithmetic: SubRdRd preOpCheck: nil]!
Item was changed:
----- Method: CogObjectRepresentationFor64BitSpur>>genPrimitiveFloatEqual (in category 'primitive generators') -----
genPrimitiveFloatEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPEqual: orIntegerComparison: JumpZero]
ifFalse: [self genPureDoubleComparison: #JumpFPEqual:]!
Item was changed:
----- Method: CogObjectRepresentationFor64BitSpur>>genPrimitiveFloatGreaterOrEqual (in category 'primitive generators') -----
genPrimitiveFloatGreaterOrEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPGreaterOrEqual: orIntegerComparison: JumpGreaterOrEqual]
ifFalse: [self genPureDoubleComparison: #JumpFPGreaterOrEqual:]!
Item was changed:
----- Method: CogObjectRepresentationFor64BitSpur>>genPrimitiveFloatGreaterThan (in category 'primitive generators') -----
genPrimitiveFloatGreaterThan
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPGreater: orIntegerComparison: JumpGreater]
ifFalse: [self genPureDoubleComparison: #JumpFPGreater:]!
Item was changed:
----- Method: CogObjectRepresentationFor64BitSpur>>genPrimitiveFloatLessOrEqual (in category 'primitive generators') -----
genPrimitiveFloatLessOrEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPLessOrEqual: orIntegerComparison: JumpLessOrEqual]
ifFalse: [self genPureDoubleComparison: #JumpFPLessOrEqual:]!
Item was changed:
----- Method: CogObjectRepresentationFor64BitSpur>>genPrimitiveFloatLessThan (in category 'primitive generators') -----
genPrimitiveFloatLessThan
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPLess: orIntegerComparison: JumpLess]
ifFalse: [self genPureDoubleComparison: #JumpFPLess:]!
Item was changed:
----- Method: CogObjectRepresentationFor64BitSpur>>genPrimitiveFloatNotEqual (in category 'primitive generators') -----
genPrimitiveFloatNotEqual
<option: #DPFPReg0>
+ ^coInterpreter primitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic
ifTrue: [self genDoubleComparison: #JumpFPNotEqual: orIntegerComparison: JumpNonZero]
ifFalse: [self genPureDoubleComparison: #JumpFPNotEqual:]!
Item was removed:
- ----- Method: CurrentImageCoInterpreterFacade>>getPrimitiveDoMixedArithmetic (in category 'cog jit support') -----
- getPrimitiveDoMixedArithmetic
- ^coInterpreter getPrimitiveDoMixedArithmetic ifNil: [true]!
Item was added:
+ ----- Method: CurrentImageCoInterpreterFacade>>primitiveDoMixedArithmetic (in category 'cog jit support') -----
+ primitiveDoMixedArithmetic
+ ^coInterpreter primitiveDoMixedArithmetic ifNil: [true]!
Item was changed:
----- Method: StackInterpreter>>primitiveDoMixedArithmetic (in category 'primitive support') -----
primitiveDoMixedArithmetic
"If primitiveDoMixedArithmetic is true, then primitive can handle the conversions:
SmallInteger arithmeticOp: Float (Small or Boxed)
SmallInteger compareOp: Float (Small or Boxed)
Else, the primitive fail in case of mixed arithmetic, and conversion should be performed at image side"
+ <api>
<cmacro: '() primitiveDoMixedArithmetic'>
^primitiveDoMixedArithmetic!
More information about the Vm-dev
mailing list