diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-03-03-10-46-13.bpo-46841.7CkuZx.rst b/Misc/NEWS.d/next/Core and Builtins/2022-03-03-10-46-13.bpo-46841.7CkuZx.rst new file mode 100644 index 00000000000000..8be83bcab3c8ec --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2022-03-03-10-46-13.bpo-46841.7CkuZx.rst @@ -0,0 +1,2 @@ +Add more detailed specialization failure stats for :opcode:`COMPARE_OP` +followed by :opcode:`EXTENDED_ARG`. diff --git a/Python/specialize.c b/Python/specialize.c index 5486b5b1f65dc9..31cbc437e6731a 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -616,6 +616,7 @@ initial_counter_value(void) { #define SPEC_FAIL_COMPARE_OP_BASEOBJECT 21 #define SPEC_FAIL_COMPARE_OP_FLOAT_LONG 22 #define SPEC_FAIL_COMPARE_OP_LONG_FLOAT 23 +#define SPEC_FAIL_COMPARE_OP_EXTENDED_ARG 24 /* FOR_ITER */ #define SPEC_FAIL_FOR_ITER_GENERATOR 10 @@ -2080,6 +2081,10 @@ _Py_Specialize_CompareOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr, *instr = _Py_MAKECODEUNIT(COMPARE_OP, oparg); return; #endif + if (next_opcode == EXTENDED_ARG) { + SPECIALIZATION_FAIL(COMPARE_OP, SPEC_FAIL_COMPARE_OP_EXTENDED_ARG); + goto failure; + } SPECIALIZATION_FAIL(COMPARE_OP, SPEC_FAIL_COMPARE_OP_NOT_FOLLOWED_BY_COND_JUMP); goto failure; }