GH-111848: Convert remaining jumps to deopts into tier 2 code. (GH-112045)

This commit is contained in:
Mark Shannon 2023-11-14 15:30:33 +00:00 committed by GitHub
parent b11c443bb2
commit a519b87958
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 194 additions and 139 deletions

View file

@ -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;
}