aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python/executor_cases.c.h
diff options
context:
space:
mode:
authorPetr Viktorin <encukou@gmail.com>2025-02-24 11:16:08 +0100
committerGitHub <noreply@github.com>2025-02-24 11:16:08 +0100
commitef29104f7d7ad7864f5f153cd7391af73d7cef63 (patch)
tree38c76b08e114a9e6e993081b828b64978bfefa2e /Python/executor_cases.c.h
parent0ff16115741aeaaaf7f963f68d5c575efb960277 (diff)
downloadcpython-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.h9
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);