summaryrefslogtreecommitdiffstats
path: root/Python/bytecodes.c
diff options
context:
space:
mode:
authorKen Jin <kenjin@python.org>2024-11-09 03:35:33 (GMT)
committerGitHub <noreply@github.com>2024-11-09 03:35:33 (GMT)
commit6293d00e7201f3f28b1f4512e57dc4f03855cabd (patch)
tree4baee70137f279c2e1f1a35159a806c67a7f9dff /Python/bytecodes.c
parentf8276bf5f37ef12aa0033634151fa33a6f7bd4f2 (diff)
downloadcpython-6293d00e7201f3f28b1f4512e57dc4f03855cabd.zip
cpython-6293d00e7201f3f28b1f4512e57dc4f03855cabd.tar.gz
cpython-6293d00e7201f3f28b1f4512e57dc4f03855cabd.tar.bz2
gh-120619: Strength reduce function guards, support 2-operand uop forms (GH-124846)
Co-authored-by: Brandt Bucher <brandtbucher@gmail.com>
Diffstat (limited to 'Python/bytecodes.c')
-rw-r--r--Python/bytecodes.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index 7ae0f20..04983fd 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -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 +