summaryrefslogtreecommitdiffstats
path: root/Python/executor_cases.c.h
diff options
context:
space:
mode:
Diffstat (limited to 'Python/executor_cases.c.h')
-rw-r--r--Python/executor_cases.c.h23
1 files changed, 12 insertions, 11 deletions
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 1283cc7..e63a36d 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -690,24 +690,25 @@
retval = stack_pointer[-1];
STACK_SHRINK(1);
assert(EMPTY());
- _PyFrame_SetStackPointer(frame, stack_pointer);
- _Py_LeaveRecursiveCallPy(tstate);
- // GH-99729: We need to unlink the frame *before* clearing it:
- _PyInterpreterFrame *dying = frame;
#if TIER_ONE
assert(frame != &entry_frame);
#endif
+ STORE_SP();
+ _Py_LeaveRecursiveCallPy(tstate);
+ // GH-99729: We need to unlink the frame *before* clearing it:
+ _PyInterpreterFrame *dying = frame;
frame = tstate->current_frame = dying->previous;
_PyEval_FrameClearAndPop(tstate, dying);
frame->prev_instr += frame->return_offset;
_PyFrame_StackPush(frame, retval);
- #if TIER_ONE
- goto resume_frame;
- #endif
- #if TIER_TWO
- stack_pointer = _PyFrame_GetStackPointer(frame);
- ip_offset = (_Py_CODEUNIT *)_PyFrame_GetCode(frame)->co_code_adaptive;
- #endif
+ LOAD_SP();
+ LOAD_IP();
+#if LLTRACE && TIER_ONE
+ lltrace = maybe_lltrace_resume_frame(frame, &entry_frame, GLOBALS());
+ if (lltrace < 0) {
+ goto exit_unwind;
+ }
+#endif
break;
}