aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/specialize.c
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2025-05-06 11:12:26 +0100
committerGitHub <noreply@github.com>2025-05-06 13:12:26 +0300
commit296cd128bf433b8d3b8d9387d7a8ca2de430fbad (patch)
treed4703de684de96ec46488198f8e3e188b393cd7f /Python/specialize.c
parent3c73cf51df2643cc144b03ac1003588d8822d5b5 (diff)
downloadcpython-296cd128bf433b8d3b8d9387d7a8ca2de430fbad.tar.gz
cpython-296cd128bf433b8d3b8d9387d7a8ca2de430fbad.zip
Revert "gh-133395: add option for extension modules to specialize BINARY_OP/SUBSCR, apply to arrays (#133396)" (#133498)
Diffstat (limited to 'Python/specialize.c')
-rw-r--r--Python/specialize.c35
1 files changed, 4 insertions, 31 deletions
diff --git a/Python/specialize.c b/Python/specialize.c
index 7861f3845bf..bbe725c8ec8 100644
--- a/Python/specialize.c
+++ b/Python/specialize.c
@@ -2534,7 +2534,7 @@ LONG_FLOAT_ACTION(compactlong_float_multiply, *)
LONG_FLOAT_ACTION(compactlong_float_true_div, /)
#undef LONG_FLOAT_ACTION
-static const _PyBinaryOpSpecializationDescr binaryop_extend_builtins[] = {
+static _PyBinaryOpSpecializationDescr binaryop_extend_descrs[] = {
/* long-long arithmetic */
{NB_OR, compactlongs_guard, compactlongs_or},
{NB_AND, compactlongs_guard, compactlongs_and},
@@ -2560,41 +2560,14 @@ static int
binary_op_extended_specialization(PyObject *lhs, PyObject *rhs, int oparg,
_PyBinaryOpSpecializationDescr **descr)
{
- /* We are currently using this only for NB_SUBSCR, which is not
- * commutative. Will need to revisit this function when we use
- * this for operators which are.
- */
-
- typedef _PyBinaryOpSpecializationDescr descr_type;
- size_t size = Py_ARRAY_LENGTH(binaryop_extend_builtins);
- for (size_t i = 0; i < size; i++) {
- descr_type *d = (descr_type *)&binaryop_extend_builtins[i];
- assert(d != NULL);
- assert(d->guard != NULL);
+ size_t n = sizeof(binaryop_extend_descrs)/sizeof(_PyBinaryOpSpecializationDescr);
+ for (size_t i = 0; i < n; i++) {
+ _PyBinaryOpSpecializationDescr *d = &binaryop_extend_descrs[i];
if (d->oparg == oparg && d->guard(lhs, rhs)) {
*descr = d;
return 1;
}
}
-
- PyTypeObject *lhs_type = Py_TYPE(lhs);
- if (lhs_type->tp_binop_specialize != NULL) {
- int ret = lhs_type->tp_binop_specialize(lhs, rhs, oparg, descr);
- if (ret < 0) {
- return -1;
- }
- if (ret == 1) {
- if (*descr == NULL) {
- PyErr_Format(
- PyExc_ValueError,
- "tp_binop_specialize of '%T' returned 1 with *descr == NULL",
- lhs);
- return -1;
- }
- (*descr)->oparg = oparg;
- }
- return ret;
- }
return 0;
}