Skip to content

Commit

Permalink
Fix
Browse files Browse the repository at this point in the history
  • Loading branch information
Fidget-Spinner committed Feb 1, 2025
1 parent 587a433 commit a01caf1
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 28 deletions.
4 changes: 2 additions & 2 deletions Python/ceval.c
Original file line number Diff line number Diff line change
Expand Up @@ -865,11 +865,11 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
const _PyUOpInstruction *next_uop = NULL;
#endif

goto start_frame;

#ifdef Py_TAIL_CALL_INTERP
return _TAIL_CALL_start_frame(frame, NULL, tstate, NULL, 0, 0);
# include "generated_tail_call_labels.c.h"
#else
goto start_frame;
# include "generated_cases.c.h"
#endif

Expand Down
89 changes: 69 additions & 20 deletions Python/generated_tail_call_labels.c.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 3 additions & 4 deletions Tools/cases_generator/tier1_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
Flush,
analysis_error,
StackItem,
Label,
)
from generators_common import (
DEFAULT_INPUT,
Expand Down Expand Up @@ -224,15 +223,15 @@ def generate_tier1(
""")
out = CWriter(outfile, 2, lines)
emitter = Emitter(out)
generate_tier1_labels(analysis.labels, emitter)
generate_tier1_labels(analysis, emitter)
outfile.write(f"{LABEL_END_MARKER}\n")
outfile.write(FOOTER)

def generate_tier1_labels(
labels: dict[str, Label], emitter: Emitter
analysis: Analysis, emitter: Emitter
) -> None:
emitter.emit("\n")
for name, label in labels.items():
for name, label in analysis.labels.items():
emitter.emit(f"{name}:\n")
emitter.emit_label(label)
emitter.emit("\n")
Expand Down
5 changes: 3 additions & 2 deletions Tools/cases_generator/tier1_tail_call_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,8 @@ def dispatch(
# Replace DISPATCH with _TAIL_CALL_entry(...)
next(tkn_iter)
next(tkn_iter)
self.emit("_TAIL_CALL_entry(frame, stack_pointer, tstate, next_instr, 0, 0);\n")
next(tkn_iter)
self.emit("return _TAIL_CALL_entry(frame, stack_pointer, tstate, next_instr, 0, 0);\n")
return True


Expand Down Expand Up @@ -194,7 +195,7 @@ def generate_tier1(
labels_outfile.write(PRELUDE)
out = CWriter(labels_outfile, 2, lines)
emitter = TailCallCevalLabelsEmitter(out)
generate_tier1_labels({label: analysis.labels[label] for label in NEEDED_LABELS}, emitter)
generate_tier1_labels(analysis, emitter)
labels_outfile.write(FOOTER)
write_header(__file__, filenames, outfile)
outfile.write(PRELUDE)
Expand Down

0 comments on commit a01caf1

Please sign in to comment.