mirror of
https://github.com/python/cpython.git
synced 2025-08-30 13:38:43 +00:00
bpo-46841: Fix BINARY_OP's handling of inline caches (GH-31671)
This commit is contained in:
parent
cedd2473a9
commit
c4d2d57eef
3 changed files with 7 additions and 3 deletions
|
@ -2028,8 +2028,9 @@ handle_eval_breaker:
|
|||
DEOPT_IF(!PyUnicode_CheckExact(left), BINARY_OP);
|
||||
DEOPT_IF(Py_TYPE(right) != Py_TYPE(left), BINARY_OP);
|
||||
DEOPT_IF(Py_REFCNT(left) != 2, BINARY_OP);
|
||||
int next_oparg = _Py_OPARG(*next_instr);
|
||||
assert(_Py_OPCODE(*next_instr) == STORE_FAST);
|
||||
_Py_CODEUNIT true_next = next_instr[INLINE_CACHE_ENTRIES_BINARY_OP];
|
||||
int next_oparg = _Py_OPARG(true_next);
|
||||
assert(_Py_OPCODE(true_next) == STORE_FAST);
|
||||
/* In the common case, there are 2 references to the value
|
||||
* stored in 'variable' when the v = v + ... is performed: one
|
||||
* on the value stack (in 'v') and one still stored in the
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue