mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
GH-112354: _GUARD_IS_TRUE_POP
side-exits to target the next instruction, not themselves. (GH-114078)
This commit is contained in:
parent
2010d45327
commit
ac10947ba7
8 changed files with 40 additions and 26 deletions
15
Python/executor_cases.c.h
generated
15
Python/executor_cases.c.h
generated
|
@ -3318,35 +3318,38 @@
|
|||
case _GUARD_IS_TRUE_POP: {
|
||||
PyObject *flag;
|
||||
flag = stack_pointer[-1];
|
||||
if (Py_IsFalse(flag)) goto deoptimize;
|
||||
assert(Py_IsTrue(flag));
|
||||
stack_pointer += -1;
|
||||
if (!Py_IsTrue(flag)) goto deoptimize;
|
||||
assert(Py_IsTrue(flag));
|
||||
break;
|
||||
}
|
||||
|
||||
case _GUARD_IS_FALSE_POP: {
|
||||
PyObject *flag;
|
||||
flag = stack_pointer[-1];
|
||||
if (Py_IsTrue(flag)) goto deoptimize;
|
||||
assert(Py_IsFalse(flag));
|
||||
stack_pointer += -1;
|
||||
if (!Py_IsFalse(flag)) goto deoptimize;
|
||||
assert(Py_IsFalse(flag));
|
||||
break;
|
||||
}
|
||||
|
||||
case _GUARD_IS_NONE_POP: {
|
||||
PyObject *val;
|
||||
val = stack_pointer[-1];
|
||||
if (!Py_IsNone(val)) goto deoptimize;
|
||||
stack_pointer += -1;
|
||||
if (!Py_IsNone(val)) {
|
||||
Py_DECREF(val);
|
||||
if (1) goto deoptimize;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case _GUARD_IS_NOT_NONE_POP: {
|
||||
PyObject *val;
|
||||
val = stack_pointer[-1];
|
||||
stack_pointer += -1;
|
||||
if (Py_IsNone(val)) goto deoptimize;
|
||||
Py_DECREF(val);
|
||||
stack_pointer += -1;
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue