VM Maker: VMMaker.oscog-eem.2551.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

VM Maker: VMMaker.oscog-eem.2551.mcz

commits-2
 
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!