mirror of
https://github.com/python/cpython.git
synced 2025-08-26 19:55:24 +00:00
GH-111848: Convert remaining jumps to deopts into tier 2 code. (GH-112045)
This commit is contained in:
parent
b11c443bb2
commit
a519b87958
7 changed files with 194 additions and 139 deletions
31
Python/executor_cases.c.h
generated
31
Python/executor_cases.c.h
generated
|
@ -3185,22 +3185,37 @@
|
|||
break;
|
||||
}
|
||||
|
||||
case _POP_JUMP_IF_FALSE: {
|
||||
case _GUARD_IS_TRUE_POP: {
|
||||
PyObject *flag;
|
||||
flag = stack_pointer[-1];
|
||||
if (Py_IsFalse(flag)) {
|
||||
next_uop = current_executor->trace + oparg;
|
||||
}
|
||||
DEOPT_IF(Py_IsFalse(flag), _GUARD_IS_TRUE_POP);
|
||||
assert(Py_IsTrue(flag));
|
||||
STACK_SHRINK(1);
|
||||
break;
|
||||
}
|
||||
|
||||
case _POP_JUMP_IF_TRUE: {
|
||||
case _GUARD_IS_FALSE_POP: {
|
||||
PyObject *flag;
|
||||
flag = stack_pointer[-1];
|
||||
if (Py_IsTrue(flag)) {
|
||||
next_uop = current_executor->trace + oparg;
|
||||
}
|
||||
DEOPT_IF(Py_IsTrue(flag), _GUARD_IS_FALSE_POP);
|
||||
assert(Py_IsFalse(flag));
|
||||
STACK_SHRINK(1);
|
||||
break;
|
||||
}
|
||||
|
||||
case _GUARD_IS_NONE_POP: {
|
||||
PyObject *val;
|
||||
val = stack_pointer[-1];
|
||||
DEOPT_IF(!Py_IsNone(val), _GUARD_IS_NONE_POP);
|
||||
STACK_SHRINK(1);
|
||||
break;
|
||||
}
|
||||
|
||||
case _GUARD_IS_NOT_NONE_POP: {
|
||||
PyObject *val;
|
||||
val = stack_pointer[-1];
|
||||
DEOPT_IF(Py_IsNone(val), _GUARD_IS_NOT_NONE_POP);
|
||||
Py_DECREF(val);
|
||||
STACK_SHRINK(1);
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue