gh-120619: Strength reduce function guards, support 2-operand uop forms (GH-124846)

Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
This commit is contained in:
Ken Jin 2024-11-09 11:35:33 +08:00 committed by GitHub
parent f8276bf5f3
commit 6293d00e72
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 379 additions and 270 deletions

View file

@ -661,7 +661,7 @@ dummy_func(
assert(next_instr->op.code == STORE_FAST);
next_oparg = next_instr->op.arg;
#else
next_oparg = CURRENT_OPERAND();
next_oparg = CURRENT_OPERAND0();
#endif
_PyStackRef *target_local = &GETLOCAL(next_oparg);
DEOPT_IF(!PyStackRef_Is(*target_local, left));
@ -3463,6 +3463,12 @@ dummy_func(
EXIT_IF(func->func_version != func_version);
}
tier2 op(_CHECK_FUNCTION_VERSION_INLINE, (func_version/2, callable_o/4 --)) {
assert(PyFunction_Check(callable_o));
PyFunctionObject *func = (PyFunctionObject *)callable_o;
EXIT_IF(func->func_version != func_version);
}
macro(CALL_PY_GENERAL) =
unused/1 + // Skip over the counter
_CHECK_PEP_523 +