@@ -195,10 +195,7 @@ dummy_func(
195195 STAT_INC (BINARY_OP , hit );
196196 double dprod = ((PyFloatObject * )left )-> ob_fval *
197197 ((PyFloatObject * )right )-> ob_fval ;
198- prod = PyFloat_FromDouble (dprod );
199- _Py_DECREF_SPECIALIZED (right , _PyFloat_ExactDealloc );
200- _Py_DECREF_SPECIALIZED (left , _PyFloat_ExactDealloc );
201- ERROR_IF (prod == NULL , error );
198+ DECREF_INPUTS_AND_REUSE_FLOAT (left , right , dprod , prod );
202199 }
203200
204201 inst (BINARY_OP_SUBTRACT_INT , (unused /1 , left , right -- sub )) {
@@ -218,10 +215,7 @@ dummy_func(
218215 DEOPT_IF (!PyFloat_CheckExact (right ), BINARY_OP );
219216 STAT_INC (BINARY_OP , hit );
220217 double dsub = ((PyFloatObject * )left )-> ob_fval - ((PyFloatObject * )right )-> ob_fval ;
221- sub = PyFloat_FromDouble (dsub );
222- _Py_DECREF_SPECIALIZED (right , _PyFloat_ExactDealloc );
223- _Py_DECREF_SPECIALIZED (left , _PyFloat_ExactDealloc );
224- ERROR_IF (sub == NULL , error );
218+ DECREF_INPUTS_AND_REUSE_FLOAT (left , right , dsub , sub );
225219 }
226220
227221 inst (BINARY_OP_ADD_UNICODE , (unused /1 , left , right -- res )) {
@@ -278,10 +272,7 @@ dummy_func(
278272 STAT_INC (BINARY_OP , hit );
279273 double dsum = ((PyFloatObject * )left )-> ob_fval +
280274 ((PyFloatObject * )right )-> ob_fval ;
281- sum = PyFloat_FromDouble (dsum );
282- _Py_DECREF_SPECIALIZED (right , _PyFloat_ExactDealloc );
283- _Py_DECREF_SPECIALIZED (left , _PyFloat_ExactDealloc );
284- ERROR_IF (sum == NULL , error );
275+ DECREF_INPUTS_AND_REUSE_FLOAT (left , right , dsum , sum );
285276 }
286277
287278 inst (BINARY_OP_ADD_INT , (unused /1 , left , right -- sum )) {
0 commit comments