summaryrefslogtreecommitdiffstats
path: root/Python/bytecodes.c
diff options
context:
space:
mode:
authorKen Jin <kenjin@python.org>2025-05-02 16:36:29 (GMT)
committerGitHub <noreply@github.com>2025-05-02 16:36:29 (GMT)
commitddac7ac59a7dfa4437562b6e705e64865c3b1e9a (patch)
tree20f83f6e1b605071f80346659124a99cd04d2d79 /Python/bytecodes.c
parent987e45e6326c6174fb7a300f44b9d8e4e26370c9 (diff)
downloadcpython-ddac7ac59a7dfa4437562b6e705e64865c3b1e9a.zip
cpython-ddac7ac59a7dfa4437562b6e705e64865c3b1e9a.tar.gz
cpython-ddac7ac59a7dfa4437562b6e705e64865c3b1e9a.tar.bz2
gh-132744: Check recursion limit in CALL_PY_GENERAL (GH-132746)
Diffstat (limited to 'Python/bytecodes.c')
-rw-r--r--Python/bytecodes.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index b6fde3f..f145bde 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -3858,6 +3858,7 @@ dummy_func(
unused/1 + // Skip over the counter
_CHECK_PEP_523 +
_CHECK_FUNCTION_VERSION +
+ _CHECK_RECURSION_REMAINING +
_PY_FRAME_GENERAL +
_SAVE_RETURN_OFFSET +
_PUSH_FRAME;
@@ -3889,6 +3890,7 @@ dummy_func(
_CHECK_METHOD_VERSION +
_EXPAND_METHOD +
flush + // so that self is in the argument array
+ _CHECK_RECURSION_REMAINING +
_PY_FRAME_GENERAL +
_SAVE_RETURN_OFFSET +
_PUSH_FRAME;
@@ -3967,6 +3969,9 @@ dummy_func(
PyFunctionObject *func = (PyFunctionObject *)callable_o;
PyCodeObject *code = (PyCodeObject *)func->func_code;
DEOPT_IF(!_PyThreadState_HasStackSpace(tstate, code->co_framesize));
+ }
+
+ op(_CHECK_RECURSION_REMAINING, (--)) {
DEOPT_IF(tstate->py_recursion_remaining <= 1);
}
@@ -4008,6 +4013,7 @@ dummy_func(
_CHECK_FUNCTION_VERSION +
_CHECK_FUNCTION_EXACT_ARGS +
_CHECK_STACK_SPACE +
+ _CHECK_RECURSION_REMAINING +
_INIT_CALL_PY_EXACT_ARGS +
_SAVE_RETURN_OFFSET +
_PUSH_FRAME;
@@ -4018,6 +4024,7 @@ dummy_func(
_CHECK_FUNCTION_VERSION +
_CHECK_FUNCTION_EXACT_ARGS +
_CHECK_STACK_SPACE +
+ _CHECK_RECURSION_REMAINING +
_INIT_CALL_PY_EXACT_ARGS +
_SAVE_RETURN_OFFSET +
_PUSH_FRAME;