diff options
author | Mark Shannon <mark@hotpy.org> | 2023-03-13 10:34:54 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-13 10:34:54 (GMT) |
commit | 233e32f93614255bf5fc7c93cd98af453e58cc98 (patch) | |
tree | 9eb812f9894064fb34f5e2ee14a019ec4a58da32 /Python/generated_cases.c.h | |
parent | 78e4e6c3d71980d4e6687f07afa6ddfc83e29b04 (diff) | |
download | cpython-233e32f93614255bf5fc7c93cd98af453e58cc98.zip cpython-233e32f93614255bf5fc7c93cd98af453e58cc98.tar.gz cpython-233e32f93614255bf5fc7c93cd98af453e58cc98.tar.bz2 |
GH-102300: Reuse objects with refcount == 1 in float specialized binary ops. (GH-102301)
Diffstat (limited to 'Python/generated_cases.c.h')
-rw-r--r-- | Python/generated_cases.c.h | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 3839aee..21073cb 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -263,10 +263,7 @@ STAT_INC(BINARY_OP, hit); double dprod = ((PyFloatObject *)left)->ob_fval * ((PyFloatObject *)right)->ob_fval; - prod = PyFloat_FromDouble(dprod); - _Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc); - _Py_DECREF_SPECIALIZED(left, _PyFloat_ExactDealloc); - if (prod == NULL) goto pop_2_error; + DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dprod, prod); STACK_SHRINK(1); stack_pointer[-1] = prod; next_instr += 1; @@ -300,10 +297,7 @@ DEOPT_IF(!PyFloat_CheckExact(right), BINARY_OP); STAT_INC(BINARY_OP, hit); double dsub = ((PyFloatObject *)left)->ob_fval - ((PyFloatObject *)right)->ob_fval; - sub = PyFloat_FromDouble(dsub); - _Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc); - _Py_DECREF_SPECIALIZED(left, _PyFloat_ExactDealloc); - if (sub == NULL) goto pop_2_error; + DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dsub, sub); STACK_SHRINK(1); stack_pointer[-1] = sub; next_instr += 1; @@ -372,10 +366,7 @@ STAT_INC(BINARY_OP, hit); double dsum = ((PyFloatObject *)left)->ob_fval + ((PyFloatObject *)right)->ob_fval; - sum = PyFloat_FromDouble(dsum); - _Py_DECREF_SPECIALIZED(right, _PyFloat_ExactDealloc); - _Py_DECREF_SPECIALIZED(left, _PyFloat_ExactDealloc); - if (sum == NULL) goto pop_2_error; + DECREF_INPUTS_AND_REUSE_FLOAT(left, right, dsum, sum); STACK_SHRINK(1); stack_pointer[-1] = sum; next_instr += 1; |