[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