summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
diff options
context:
space:
mode:
authorBrandt Bucher <brandt@python.org>2022-01-05 11:30:26 (GMT)
committerGitHub <noreply@github.com>2022-01-05 11:30:26 (GMT)
commit332e6b972567debfa9d8f3f9a4a966c7ad15eec9 (patch)
treeb5813cf03292f6639c9dc2a97d470390dafb37e5 /Python/ceval.c
parentcae55542d23e606dde9819d5dadd7430085fcc77 (diff)
downloadcpython-332e6b972567debfa9d8f3f9a4a966c7ad15eec9.zip
cpython-332e6b972567debfa9d8f3f9a4a966c7ad15eec9.tar.gz
cpython-332e6b972567debfa9d8f3f9a4a966c7ad15eec9.tar.bz2
bpo-45256: Don't track the exact depth of each `InterpreterFrame` (GH-30372)
Diffstat (limited to 'Python/ceval.c')
-rw-r--r--Python/ceval.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 953876f..b4ac9ec 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1683,7 +1683,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, InterpreterFrame *frame, int thr
cframe.previous = prev_cframe;
tstate->cframe = &cframe;
- assert(frame->depth == 0);
+ frame->is_entry = true;
/* Push frame */
frame->previous = prev_cframe->current_frame;
cframe.current_frame = frame;
@@ -2310,7 +2310,6 @@ check_eval_breaker:
_PyFrame_SetStackPointer(frame, stack_pointer);
new_frame->previous = frame;
frame = cframe.current_frame = new_frame;
- new_frame->depth = frame->depth + 1;
goto start_frame;
}
@@ -2475,7 +2474,7 @@ check_eval_breaker:
TRACE_FUNCTION_EXIT();
DTRACE_FUNCTION_EXIT();
_Py_LeaveRecursiveCall(tstate);
- if (frame->depth) {
+ if (!frame->is_entry) {
frame = cframe.current_frame = pop_frame(tstate, frame);
_PyFrame_StackPush(frame, retval);
goto resume_frame;
@@ -2625,7 +2624,7 @@ check_eval_breaker:
}
TARGET(SEND) {
- assert(frame->depth == 0);
+ assert(frame->is_entry);
assert(STACK_LEVEL() >= 2);
PyObject *v = POP();
PyObject *receiver = TOP();
@@ -2684,7 +2683,7 @@ check_eval_breaker:
}
TARGET(YIELD_VALUE) {
- assert(frame->depth == 0);
+ assert(frame->is_entry);
PyObject *retval = POP();
if (frame->f_code->co_flags & CO_ASYNC_GENERATOR) {
@@ -4612,7 +4611,6 @@ check_eval_breaker:
_PyFrame_SetStackPointer(frame, stack_pointer);
new_frame->previous = frame;
cframe.current_frame = frame = new_frame;
- new_frame->depth = frame->depth + 1;
goto start_frame;
}
}
@@ -4706,7 +4704,6 @@ check_eval_breaker:
_PyFrame_SetStackPointer(frame, stack_pointer);
new_frame->previous = frame;
frame = cframe.current_frame = new_frame;
- new_frame->depth = frame->depth + 1;
goto start_frame;
}
@@ -5382,7 +5379,7 @@ exception_unwind:
exit_unwind:
assert(_PyErr_Occurred(tstate));
_Py_LeaveRecursiveCall(tstate);
- if (frame->depth == 0) {
+ if (frame->is_entry) {
/* Restore previous cframe and exit */
tstate->cframe = cframe.previous;
tstate->cframe->use_tracing = cframe.use_tracing;