mirror of
https://github.com/python/cpython.git
synced 2025-07-23 11:15:24 +00:00
GH-125323: Convert DECREF_INPUTS_AND_REUSE_FLOAT into a function that takes PyStackRefs. (GH-125439)
This commit is contained in:
parent
67f6e08147
commit
06ca33020e
10 changed files with 69 additions and 44 deletions
|
@ -539,9 +539,9 @@ dummy_func(
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval *
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
INPUTS_DEAD();
|
||||
ERROR_IF(res_o == NULL, error);
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
}
|
||||
|
||||
|
@ -553,9 +553,9 @@ dummy_func(
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval +
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
INPUTS_DEAD();
|
||||
ERROR_IF(res_o == NULL, error);
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
}
|
||||
|
||||
|
@ -567,9 +567,9 @@ dummy_func(
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval -
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
INPUTS_DEAD();
|
||||
ERROR_IF(res_o == NULL, error);
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
}
|
||||
|
||||
|
|
|
@ -327,26 +327,6 @@ GETITEM(PyObject *v, Py_ssize_t i) {
|
|||
" in enclosing scope"
|
||||
#define NAME_ERROR_MSG "name '%.200s' is not defined"
|
||||
|
||||
#define DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dval, result) \
|
||||
do { \
|
||||
if (Py_REFCNT(left) == 1) { \
|
||||
((PyFloatObject *)left)->ob_fval = (dval); \
|
||||
_Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc);\
|
||||
result = (left); \
|
||||
} \
|
||||
else if (Py_REFCNT(right) == 1) {\
|
||||
((PyFloatObject *)right)->ob_fval = (dval); \
|
||||
_Py_DECREF_NO_DEALLOC(left); \
|
||||
result = (right); \
|
||||
}\
|
||||
else { \
|
||||
result = PyFloat_FromDouble(dval); \
|
||||
if ((result) == NULL) GOTO_ERROR(error); \
|
||||
_Py_DECREF_NO_DEALLOC(left); \
|
||||
_Py_DECREF_NO_DEALLOC(right); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
// If a trace function sets a new f_lineno and
|
||||
// *then* raises, we use the destination when searching
|
||||
// for an exception handler, displaying the traceback, and so on
|
||||
|
|
12
Python/executor_cases.c.h
generated
12
Python/executor_cases.c.h
generated
|
@ -643,8 +643,8 @@
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval *
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
if (res_o == NULL) JUMP_TO_ERROR();
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
stack_pointer[-2] = res;
|
||||
stack_pointer += -1;
|
||||
|
@ -664,8 +664,8 @@
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval +
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
if (res_o == NULL) JUMP_TO_ERROR();
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
stack_pointer[-2] = res;
|
||||
stack_pointer += -1;
|
||||
|
@ -685,8 +685,8 @@
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval -
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
if (res_o == NULL) JUMP_TO_ERROR();
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
stack_pointer[-2] = res;
|
||||
stack_pointer += -1;
|
||||
|
|
12
Python/generated_cases.c.h
generated
12
Python/generated_cases.c.h
generated
|
@ -84,8 +84,8 @@
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval +
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
if (res_o == NULL) goto pop_2_error;
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
}
|
||||
stack_pointer[-2] = res;
|
||||
|
@ -251,8 +251,8 @@
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval *
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
if (res_o == NULL) goto pop_2_error;
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
}
|
||||
stack_pointer[-2] = res;
|
||||
|
@ -322,8 +322,8 @@
|
|||
double dres =
|
||||
((PyFloatObject *)left_o)->ob_fval -
|
||||
((PyFloatObject *)right_o)->ob_fval;
|
||||
PyObject *res_o;
|
||||
DECREF_INPUTS_AND_REUSE_FLOAT(left_o, right_o, dres, res_o);
|
||||
PyObject *res_o = _PyFloat_FromDouble_ConsumeInputs(left, right, dres);
|
||||
if (res_o == NULL) goto pop_2_error;
|
||||
res = PyStackRef_FromPyObjectSteal(res_o);
|
||||
}
|
||||
stack_pointer[-2] = res;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue