diff options
author | Brandt Bucher <brandt@python.org> | 2021-11-15 16:58:23 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-15 16:58:23 (GMT) |
commit | ec382fac0db6d9159c2d3496a70b7a605545957e (patch) | |
tree | 0b66f6d45808700c7597e9db677434091653c70b /Python/specialize.c | |
parent | 822c3dcce3996e411c1ff5c432c6ac7d2845cfd6 (diff) | |
download | cpython-ec382fac0db6d9159c2d3496a70b7a605545957e.zip cpython-ec382fac0db6d9159c2d3496a70b7a605545957e.tar.gz cpython-ec382fac0db6d9159c2d3496a70b7a605545957e.tar.bz2 |
bpo-45636: Remove the old %-formatting fast-path (GH-29532)
Diffstat (limited to 'Python/specialize.c')
-rw-r--r-- | Python/specialize.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Python/specialize.c b/Python/specialize.c index 7e72013..cfc21bf 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -1380,13 +1380,13 @@ _Py_Specialize_BinaryOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr, SpecializedCacheEntry *cache) { _PyAdaptiveEntry *adaptive = &cache->adaptive; - if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) { - SPECIALIZATION_FAIL(BINARY_OP, SPEC_FAIL_DIFFERENT_TYPES); - goto failure; - } switch (adaptive->original_oparg) { case NB_ADD: case NB_INPLACE_ADD: + if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) { + SPECIALIZATION_FAIL(BINARY_OP, SPEC_FAIL_DIFFERENT_TYPES); + goto failure; + } if (PyUnicode_CheckExact(lhs)) { if (_Py_OPCODE(instr[1]) == STORE_FAST && Py_REFCNT(lhs) == 2) { *instr = _Py_MAKECODEUNIT(BINARY_OP_INPLACE_ADD_UNICODE, @@ -1409,6 +1409,10 @@ _Py_Specialize_BinaryOp(PyObject *lhs, PyObject *rhs, _Py_CODEUNIT *instr, break; case NB_MULTIPLY: case NB_INPLACE_MULTIPLY: + if (!Py_IS_TYPE(lhs, Py_TYPE(rhs))) { + SPECIALIZATION_FAIL(BINARY_OP, SPEC_FAIL_DIFFERENT_TYPES); + goto failure; + } if (PyLong_CheckExact(lhs)) { *instr = _Py_MAKECODEUNIT(BINARY_OP_MULTIPLY_INT, _Py_OPARG(*instr)); |