Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Move labels into tier 1 generator
  • Loading branch information
Fidget-Spinner committed Jan 21, 2025
commit b911bb1bb60577e9708d3a92e9f17298d5f7d11b
1 change: 0 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@ Programs/test_frozenmain.h generated
Python/Python-ast.c generated
Python/executor_cases.c.h generated
Python/generated_cases.c.h generated
Python/generated_labels.c.h generated
Python/optimizer_cases.c.h generated
Python/opcode_targets.h generated
Python/stdlib_module_names.h generated
Expand Down
51 changes: 0 additions & 51 deletions Lib/test/test_generated_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ def skip_if_different_mount_drives():
import parser
from stack import Local, Stack
import tier1_generator
import labels_generator
import opcode_metadata_generator
import optimizer_generator

Expand Down Expand Up @@ -1757,55 +1756,6 @@ def test_kill_in_wrong_order(self):
with self.assertRaises(SyntaxError):
self.run_cases_test(input, "")


class TestGeneratedLabels(unittest.TestCase):
def setUp(self) -> None:
super().setUp()
self.maxDiff = None

self.temp_dir = tempfile.gettempdir()
self.temp_input_filename = os.path.join(self.temp_dir, "input.txt")
self.temp_output_filename = os.path.join(self.temp_dir, "output.txt")
self.temp_metadata_filename = os.path.join(self.temp_dir, "metadata.txt")
self.temp_pymetadata_filename = os.path.join(self.temp_dir, "pymetadata.txt")
self.temp_executor_filename = os.path.join(self.temp_dir, "executor.txt")

def tearDown(self) -> None:
for filename in [
self.temp_input_filename,
self.temp_output_filename,
self.temp_metadata_filename,
self.temp_pymetadata_filename,
self.temp_executor_filename,
]:
try:
os.remove(filename)
except Exception:
pass
super().tearDown()

def run_cases_test(self, input: str, expected: str):
with open(self.temp_input_filename, "w+") as temp_input:
temp_input.write(parser.BEGIN_MARKER)
temp_input.write(input)
temp_input.write(parser.END_MARKER)
temp_input.flush()

with handle_stderr():
labels_generator.generate_labels_from_files(
[self.temp_input_filename], self.temp_output_filename
)

with open(self.temp_output_filename) as temp_output:
lines = temp_output.readlines()
while lines and lines[0].startswith(("// ", "#", " #", "\n")):
lines.pop(0)
while lines and lines[-1].startswith(("#", "\n")):
lines.pop(-1)
actual = "".join(lines)

self.assertEqual(actual.strip(), expected.strip())

def test_complex_label(self):
input = """
label(my_label) {
Expand Down Expand Up @@ -1861,7 +1811,6 @@ def test_multiple_labels(self):
goto my_label_3;
}
"""
self.run_cases_test(input, output)

class TestGeneratedAbstractCases(unittest.TestCase):
def setUp(self) -> None:
Expand Down
9 changes: 1 addition & 8 deletions Makefile.pre.in
Original file line number Diff line number Diff line change
Expand Up @@ -1985,7 +1985,7 @@ Objects/mimalloc/page.o: $(srcdir)/Objects/mimalloc/page-queue.c
.PHONY: regen-cases
regen-cases: \
regen-opcode-ids regen-opcode-targets regen-uop-ids regen-opcode-metadata-py \
regen-generated-cases regen-generated-labels regen-executor-cases regen-optimizer-cases \
regen-generated-cases regen-executor-cases regen-optimizer-cases \
regen-opcode-metadata regen-uop-metadata

.PHONY: regen-opcode-ids
Expand Down Expand Up @@ -2018,13 +2018,6 @@ regen-generated-cases:
-o $(srcdir)/Python/generated_cases.c.h.new $(srcdir)/Python/bytecodes.c
$(UPDATE_FILE) $(srcdir)/Python/generated_cases.c.h $(srcdir)/Python/generated_cases.c.h.new

.PHONY: regen-generated-labels
regen-generated-labels:
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/labels_generator.py \
-o $(srcdir)/Python/generated_labels.c.h.new $(srcdir)/Python/bytecodes.c
$(UPDATE_FILE) $(srcdir)/Python/generated_labels.c.h $(srcdir)/Python/generated_labels.c.h.new


.PHONY: regen-executor-cases
regen-executor-cases:
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/cases_generator/tier2_generator.py \
Expand Down
2 changes: 0 additions & 2 deletions PCbuild/regen.targets
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,6 @@
WorkingDirectory="$(PySourcePath)" />
<Exec Command="$(PythonForBuild) Tools\cases_generator\tier1_generator.py Python\bytecodes.c"
WorkingDirectory="$(PySourcePath)" />
<Exec Command="$(PythonForBuild) Tools\cases_generator\labels_generator.py Python\bytecodes.c"
WorkingDirectory="$(PySourcePath)" />
<Exec Command="$(PythonForBuild) Tools\cases_generator\tier2_generator.py Python\bytecodes.c"
WorkingDirectory="$(PySourcePath)" />
<Exec Command="$(PythonForBuild) Tools\cases_generator\optimizer_generator.py Python\optimizer_bytecodes.c Python\bytecodes.c"
Expand Down
30 changes: 0 additions & 30 deletions Python/ceval.c
Original file line number Diff line number Diff line change
Expand Up @@ -895,39 +895,9 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int

DISPATCH();

/* Start instructions */
#if !USE_COMPUTED_GOTOS
dispatch_opcode:
switch (opcode)
#endif
{

#include "generated_cases.c.h"


#if USE_COMPUTED_GOTOS
_unknown_opcode:
#else
EXTRA_CASES // From pycore_opcode_metadata.h, a 'case' for each unused opcode
#endif
/* Tell C compilers not to hold the opcode variable in the loop.
next_instr points the current instruction without TARGET(). */
opcode = next_instr->op.code;
_PyErr_Format(tstate, PyExc_SystemError,
"%U:%d: unknown opcode %d",
_PyFrame_GetCode(frame)->co_filename,
PyUnstable_InterpreterFrame_GetLine(frame),
opcode);
goto error;

} /* End instructions */

/* This should never be reached. Every opcode should end with DISPATCH()
or goto error. */
Py_UNREACHABLE();

#include "generated_labels.c.h"

#ifdef _Py_TIER2

// Tier 2 is also here!
Expand Down
153 changes: 153 additions & 0 deletions Python/generated_cases.c.h

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

1 change: 0 additions & 1 deletion Tools/c-analyzer/cpython/_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ def clean_lines(text):
Python/deepfreeze/*.c
Python/frozen_modules/*.h
Python/generated_cases.c.h
Python/generated_labels.c.h
Python/executor_cases.c.h
Python/optimizer_cases.c.h

Expand Down
67 changes: 0 additions & 67 deletions Tools/cases_generator/labels_generator.py

This file was deleted.

Loading