summaryrefslogtreecommitdiffstats
path: root/Python/executor_cases.c.h
diff options
context:
space:
mode:
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r--Python/executor_cases.c.h59
1 files changed, 4 insertions, 55 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 2e7b970..26ac159 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -2189,24 +2189,6 @@
break;
}
- case _CONTAINS_OP_LIST: {
- PyObject *right;
- PyObject *left;
- PyObject *b;
- oparg = CURRENT_OPARG();
- right = stack_pointer[-1];
- left = stack_pointer[-2];
- if (!PyList_CheckExact(right)) goto deoptimize;
- int res = _PyList_Contains(right, left);
- Py_DECREF(left);
- Py_DECREF(right);
- if (res < 0) goto pop_2_error_tier_two;
- b = (res ^ oparg) ? Py_True : Py_False;
- stack_pointer[-2] = b;
- stack_pointer += -1;
- break;
- }
-
case _CONTAINS_OP_SET: {
PyObject *right;
PyObject *left;
@@ -2214,7 +2196,9 @@
oparg = CURRENT_OPARG();
right = stack_pointer[-1];
left = stack_pointer[-2];
- if (!PySet_CheckExact(right)) goto deoptimize;
+ if (!(PySet_CheckExact(right) || PyFrozenSet_CheckExact(right))) goto deoptimize;
+ STAT_INC(CONTAINS_OP, hit);
+ // Note: both set and frozenset use the same seq_contains method!
int res = _PySet_Contains((PySetObject *)right, left);
Py_DECREF(left);
Py_DECREF(right);
@@ -2225,24 +2209,6 @@
break;
}
- case _CONTAINS_OP_TUPLE: {
- PyObject *right;
- PyObject *left;
- PyObject *b;
- oparg = CURRENT_OPARG();
- right = stack_pointer[-1];
- left = stack_pointer[-2];
- if (!PyTuple_CheckExact(right)) goto deoptimize;
- int res = _PyTuple_Contains((PyTupleObject *)right, left);
- Py_DECREF(left);
- Py_DECREF(right);
- if (res < 0) goto pop_2_error_tier_two;
- b = (res ^ oparg) ? Py_True : Py_False;
- stack_pointer[-2] = b;
- stack_pointer += -1;
- break;
- }
-
case _CONTAINS_OP_DICT: {
PyObject *right;
PyObject *left;
@@ -2251,6 +2217,7 @@
right = stack_pointer[-1];
left = stack_pointer[-2];
if (!PyDict_CheckExact(right)) goto deoptimize;
+ STAT_INC(CONTAINS_OP, hit);
int res = PyDict_Contains(right, left);
Py_DECREF(left);
Py_DECREF(right);
@@ -2261,24 +2228,6 @@
break;
}
- case _CONTAINS_OP_STR: {
- PyObject *right;
- PyObject *left;
- PyObject *b;
- oparg = CURRENT_OPARG();
- right = stack_pointer[-1];
- left = stack_pointer[-2];
- if (!PyUnicode_CheckExact(right)) goto deoptimize;
- int res = PyUnicode_Contains(right, left);
- Py_DECREF(left);
- Py_DECREF(right);
- if (res < 0) goto pop_2_error_tier_two;
- b = (res ^ oparg) ? Py_True : Py_False;
- stack_pointer[-2] = b;
- stack_pointer += -1;
- break;
- }
-
case _CHECK_EG_MATCH: {
PyObject *match_type;
PyObject *exc_value;