diff options
author | Petr Viktorin <encukou@gmail.com> | 2025-02-24 11:16:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-24 11:16:08 +0100 |
commit | ef29104f7d7ad7864f5f153cd7391af73d7cef63 (patch) | |
tree | 38c76b08e114a9e6e993081b828b64978bfefa2e /Python/executor_cases.c.h | |
parent | 0ff16115741aeaaaf7f963f68d5c575efb960277 (diff) | |
download | cpython-ef29104f7d7ad7864f5f153cd7391af73d7cef63.tar.gz cpython-ef29104f7d7ad7864f5f153cd7391af73d7cef63.zip |
GH-91079: Revert "GH-91079: Implement C stack limits using addresses, not counters. (GH-130007)" for now (GH130413)
Revert "GH-91079: Implement C stack limits using addresses, not counters. (GH-130007)" for now
Unfortunatlely, the change broke some buildbots.
This reverts commit 2498c22fa0a2b560491bc503fa676585c1a603d0.
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r-- | Python/executor_cases.c.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index 9520bc854dc..5962e0ebd4f 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -5426,13 +5426,14 @@ JUMP_TO_JUMP_TARGET(); } // CPython promises to check all non-vectorcall function calls. - if (_Py_ReachedRecursionLimit(tstate)) { + if (tstate->c_recursion_remaining <= 0) { UOP_STAT_INC(uopcode, miss); JUMP_TO_JUMP_TARGET(); } STAT_INC(CALL, hit); PyCFunction cfunc = PyCFunction_GET_FUNCTION(callable_o); _PyStackRef arg = args[0]; + _Py_EnterRecursiveCallTstateUnchecked(tstate); _PyFrame_SetStackPointer(frame, stack_pointer); PyObject *res_o = _PyCFunction_TrampolineCall(cfunc, PyCFunction_GET_SELF(callable_o), PyStackRef_AsPyObjectBorrow(arg)); stack_pointer = _PyFrame_GetStackPointer(frame); @@ -5812,7 +5813,7 @@ JUMP_TO_JUMP_TARGET(); } // CPython promises to check all non-vectorcall function calls. - if (_Py_ReachedRecursionLimit(tstate)) { + if (tstate->c_recursion_remaining <= 0) { UOP_STAT_INC(uopcode, miss); JUMP_TO_JUMP_TARGET(); } @@ -5825,6 +5826,7 @@ } STAT_INC(CALL, hit); PyCFunction cfunc = meth->ml_meth; + _Py_EnterRecursiveCallTstateUnchecked(tstate); _PyFrame_SetStackPointer(frame, stack_pointer); PyObject *res_o = _PyCFunction_TrampolineCall(cfunc, PyStackRef_AsPyObjectBorrow(self_stackref), @@ -5982,12 +5984,13 @@ JUMP_TO_JUMP_TARGET(); } // CPython promises to check all non-vectorcall function calls. - if (_Py_ReachedRecursionLimit(tstate)) { + if (tstate->c_recursion_remaining <= 0) { UOP_STAT_INC(uopcode, miss); JUMP_TO_JUMP_TARGET(); } STAT_INC(CALL, hit); PyCFunction cfunc = meth->ml_meth; + _Py_EnterRecursiveCallTstateUnchecked(tstate); _PyFrame_SetStackPointer(frame, stack_pointer); PyObject *res_o = _PyCFunction_TrampolineCall(cfunc, self, NULL); stack_pointer = _PyFrame_GetStackPointer(frame); |