[3.13] gh-132744: Check recursion limit in _PY_FRAME_GENERAL (GH-132746) (GH-138032)

This commit is contained in:
Kliment Lamonov 2025-08-22 15:25:24 +03:00 committed by GitHub
parent 8f2280272d
commit ebccd1de88
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 164 additions and 122 deletions

View file

@ -3205,6 +3205,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;
@ -3234,6 +3235,7 @@ dummy_func(
_CHECK_PEP_523 +
_CHECK_METHOD_VERSION +
_EXPAND_METHOD +
_CHECK_RECURSION_REMAINING +
_PY_FRAME_GENERAL +
_SAVE_RETURN_OFFSET +
_PUSH_FRAME;
@ -3302,6 +3304,9 @@ dummy_func(
PyFunctionObject *func = (PyFunctionObject *)callable;
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);
}
@ -3339,6 +3344,7 @@ dummy_func(
_INIT_CALL_BOUND_METHOD_EXACT_ARGS +
_CHECK_FUNCTION_EXACT_ARGS +
_CHECK_STACK_SPACE +
_CHECK_RECURSION_REMAINING +
_INIT_CALL_PY_EXACT_ARGS +
_SAVE_RETURN_OFFSET +
_PUSH_FRAME;
@ -3348,6 +3354,7 @@ dummy_func(
_CHECK_PEP_523 +
_CHECK_FUNCTION_EXACT_ARGS +
_CHECK_STACK_SPACE +
_CHECK_RECURSION_REMAINING +
_INIT_CALL_PY_EXACT_ARGS +
_SAVE_RETURN_OFFSET +
_PUSH_FRAME;