diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 072eee42f29ec9..1214665b391f22 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -1,3 +1,11 @@ +// This file contains instruction definitions. +// It is read by Tools/cases_generator/generate_cases.py +// to generate Python/generated_cases.c.h. +// Note that there is some dummy C code at the top and bottom of the file +// to fool text editors like VS Code into believing this is valid C code. +// The actual instruction definitions start at // BEGIN BYTECODES //. +// See Tools/cases_generator/README.md for more information. + #include "Python.h" #include "pycore_abstract.h" // _PyIndex_Check() #include "pycore_call.h" // _PyObject_FastCallDictTstate() @@ -3976,13 +3984,14 @@ dummy_func( // END BYTECODES // } - error:; - exception_unwind:; - handle_eval_breaker:; - resume_frame:; - resume_with_error:; - start_frame:; - unbound_local_error:; + error: + exception_unwind: + handle_eval_breaker: + resume_frame: + resume_with_error: + start_frame: + unbound_local_error: + ; } // Families go below this point // diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index bea51d7e5160dc..c678de5dff335b 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -1,4 +1,4 @@ -// This file is generated by Tools/scripts/generate_cases.py +// This file is generated by Tools/cases_generator/generate_cases.py // Do not edit! TARGET(NOP) { diff --git a/Tools/cases_generator/generate_cases.py b/Tools/cases_generator/generate_cases.py index 82e58017d64836..ec2481b31b9fd6 100644 --- a/Tools/cases_generator/generate_cases.py +++ b/Tools/cases_generator/generate_cases.py @@ -6,6 +6,7 @@ import argparse import io +import os import re import sys @@ -67,7 +68,7 @@ def write_cases(f: io.TextIOBase, instrs: list[InstDef]): for target in re.findall(r"(?:PREDICT|GO_TO_INSTRUCTION)\((\w+)\)", inst.block.text): predictions.add(target) indent = " " - f.write("// This file is generated by Tools/scripts/generate_cases.py\n") + f.write(f"// This file is generated by {os.path.relpath(__file__)}\n") f.write("// Do not edit!\n") for instr in instrs: assert isinstance(instr, InstDef)