Skip to content

Commit beeff33

Browse files
committed
fix merge
1 parent 1ab2f02 commit beeff33

2 files changed

Lines changed: 58 additions & 37 deletions

File tree

Python/record_functions.c.h

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

Tools/cases_generator/record_function_generator.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -92,19 +92,21 @@ def add(name: str) -> None:
9292
slot_index[kind] = len(records)
9393
records.append(source)
9494
elif records[existing] != source:
95-
raise ValueError(
96-
f"Family {family.name} has incompatible recorders for "
97-
f"slot {kind}: {records[existing]} and {source}"
98-
)
95+
if raw not in record_slot_keys:
96+
raise ValueError(
97+
f"Family {family.name} has incompatible recorders for "
98+
f"slot {kind}: {records[existing]} and {source}, "
99+
f"and no raw recorder {raw} exists to use as a base."
100+
)
101+
records[existing] = raw
99102

100103
for member in family.members:
101104
for name in instruction_records[member.name]:
102105
add(name)
103-
# Family head supplies any slots no member exercises.
106+
# Family head supplies any slots no member exercises, and may also
107+
# conflict with members (resolved via the raw recorder above).
104108
for name in instruction_records[family.name]:
105-
if record_slot_keys[name] not in slot_index:
106-
slot_index[record_slot_keys[name]] = len(records)
107-
records.append(name)
109+
add(name)
108110
return records
109111

110112

@@ -285,13 +287,13 @@ def generate_record_transform_dispatcher(
285287
"_PyOpcode_RecordTransformValue(int uop, PyObject *value)\n"
286288
"{\n"
287289
)
288-
out.emit(" switch (uop) {\n")
290+
out.emit("switch (uop) {\n")
289291
for name in transform_names:
290-
out.emit(f" case {name}:\n")
291-
out.emit(f" return _PyOpcode_RecordTransform{name[7:]}(value);\n")
292-
out.emit(" default:\n")
293-
out.emit(" return value;\n")
294-
out.emit(" }\n")
292+
out.emit(f"case {name}:\n")
293+
out.emit(f" return _PyOpcode_RecordTransform{name[7:]}(value);\n")
294+
out.emit("default:\n")
295+
out.emit(" return value;\n")
296+
out.emit("}\n")
295297
out.emit("}\n")
296298

297299

0 commit comments

Comments
 (0)