diff options
author | Brandt Bucher <brandt@python.org> | 2022-01-05 11:30:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-05 11:30:26 (GMT) |
commit | 332e6b972567debfa9d8f3f9a4a966c7ad15eec9 (patch) | |
tree | b5813cf03292f6639c9dc2a97d470390dafb37e5 /Python/ceval.c | |
parent | cae55542d23e606dde9819d5dadd7430085fcc77 (diff) | |
download | cpython-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.c | 13 |
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; |