8000 Avoid redundant stack frame saves/restores · python/cpython@c786418 · GitHub
[go: up one dir, main page]

Skip to content

Commit c786418

Browse files
committed
Avoid redundant stack frame saves/restores
1 parent 15df63f commit c786418

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Python/ceval.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
755755
next_instr = frame->instr_ptr;
756756
resume_frame:
757757
stack_pointer = _PyFrame_GetStackPointer(frame);
758+
resume_frame_using_stack_pointer:
758759

759760
#ifdef LLTRACE
760761
lltrace = maybe_lltrace_resume_frame(frame, &entry_frame, GLOBALS());
@@ -1081,7 +1082,6 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
10811082
OPT_HIST(trace_uop_execution_counter, trace_run_length_hist);
10821083
UOP_STAT_INC(uopcode, miss);
10831084
frame->return_offset = 0; // Don't leave this random
1084-
_PyFrame_SetStackPointer(frame, stack_pointer);
10851085

10861086
// Check if there is a side-exit executor here already.
10871087
int pc = next_uop - 1 - current_executor->trace;
@@ -1113,7 +1113,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
11131113
if (ucounter <= threshold)
11141114
{
11151115
Py_DECREF(current_executor);
1116-
goto resume_frame;
1116+
goto resume_frame_using_stack_pointer;
11171117
}
11181118

11191119
// Decode instruction to look past EXTENDED_ARG.
@@ -1186,7 +1186,7 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
11861186
*pcounter = ((1 << 16) - ((1 << OPTIMIZER_BITS_IN_COUNTER) << backoff)) | backoff;
11871187

11881188
Py_DECREF(current_executor);
1189-
goto resume_frame;
1189+
goto resume_frame_using_stack_pointer;
11901190
}
11911191

11921192
#if defined(__GNUC__)

0 commit comments

Comments
 (0)
0