Skip to content

Commit a01caf1

Browse files
Fix
1 parent 587a433 commit a01caf1

File tree

4 files changed

+77
-28
lines changed

4 files changed

+77
-28
lines changed

Python/ceval.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -865,11 +865,11 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
865865
const _PyUOpInstruction *next_uop = NULL;
866866
#endif
867867

868+
goto start_frame;
869+
868870
#ifdef Py_TAIL_CALL_INTERP
869-
return _TAIL_CALL_start_frame(frame, NULL, tstate, NULL, 0, 0);
870871
# include "generated_tail_call_labels.c.h"
871872
#else
872-
goto start_frame;
873873
# include "generated_cases.c.h"
874874
#endif
875875

Python/generated_tail_call_labels.c.h

Lines changed: 69 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Tools/cases_generator/tier1_generator.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
Flush,
1616
analysis_error,
1717
StackItem,
18-
Label,
1918
)
2019
from generators_common import (
2120
DEFAULT_INPUT,
@@ -224,15 +223,15 @@ def generate_tier1(
224223
""")
225224
out = CWriter(outfile, 2, lines)
226225
emitter = Emitter(out)
227-
generate_tier1_labels(analysis.labels, emitter)
226+
generate_tier1_labels(analysis, emitter)
228227
outfile.write(f"{LABEL_END_MARKER}\n")
229228
outfile.write(FOOTER)
230229

231230
def generate_tier1_labels(
232-
labels: dict[str, Label], emitter: Emitter
231+
analysis: Analysis, emitter: Emitter
233232
) -> None:
234233
emitter.emit("\n")
235-
for name, label in labels.items():
234+
for name, label in analysis.labels.items():
236235
emitter.emit(f"{name}:\n")
237236
emitter.emit_label(label)
238237
emitter.emit("\n")

Tools/cases_generator/tier1_tail_call_generator.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ def dispatch(
147147
# Replace DISPATCH with _TAIL_CALL_entry(...)
148148
next(tkn_iter)
149149
next(tkn_iter)
150-
self.emit("_TAIL_CALL_entry(frame, stack_pointer, tstate, next_instr, 0, 0);\n")
150+
next(tkn_iter)
151+
self.emit("return _TAIL_CALL_entry(frame, stack_pointer, tstate, next_instr, 0, 0);\n")
151152
return True
152153

153154

@@ -194,7 +195,7 @@ def generate_tier1(
194195
labels_outfile.write(PRELUDE)
195196
out = CWriter(labels_outfile, 2, lines)
196197
emitter = TailCallCevalLabelsEmitter(out)
197-
generate_tier1_labels({label: analysis.labels[label] for label in NEEDED_LABELS}, emitter)
198+
generate_tier1_labels(analysis, emitter)
198199
labels_outfile.write(FOOTER)
199200
write_header(__file__, filenames, outfile)
200201
outfile.write(PRELUDE)

0 commit comments

Comments
 (0)