GH-111485: Sort cases in the case generator output (GH-112315)

This commit is contained in:
Mark Shannon 2023-11-22 15:19:50 +00:00 committed by GitHub
parent fef6fb8762
commit 1619f4350e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 4580 additions and 4576 deletions

View file

@ -405,19 +405,6 @@ def test_macro_instruction(self):
family(OP, INLINE_CACHE_ENTRIES_OP) = { OP3 };
"""
output = """
TARGET(OP1) {
_Py_CODEUNIT *this_instr = frame->instr_ptr = next_instr;
next_instr += 2;
INSTRUCTION_STATS(OP1);
PyObject *right;
PyObject *left;
right = stack_pointer[-1];
left = stack_pointer[-2];
uint16_t counter = read_u16(&this_instr[1].cache);
op1(left, right);
DISPATCH();
}
TARGET(OP) {
frame->instr_ptr = next_instr;
next_instr += 6;
@ -447,6 +434,19 @@ def test_macro_instruction(self):
DISPATCH();
}
TARGET(OP1) {
_Py_CODEUNIT *this_instr = frame->instr_ptr = next_instr;
next_instr += 2;
INSTRUCTION_STATS(OP1);
PyObject *right;
PyObject *left;
right = stack_pointer[-1];
left = stack_pointer[-2];
uint16_t counter = read_u16(&this_instr[1].cache);
op1(left, right);
DISPATCH();
}
TARGET(OP3) {
frame->instr_ptr = next_instr;
next_instr += 6;

File diff suppressed because it is too large Load diff

View file

@ -769,6 +769,7 @@ def write_instructions(
# Write and count instructions of all kinds
n_macros = 0
cases = []
for thing in self.everything:
match thing:
case parsing.InstDef():
@ -776,11 +777,14 @@ def write_instructions(
case parsing.Macro():
n_macros += 1
mac = self.macro_instrs[thing.name]
stacking.write_macro_instr(mac, self.out)
cases.append((mac.name, mac))
case parsing.Pseudo():
pass
case _:
assert_never(thing)
cases.sort()
for _, mac in cases:
stacking.write_macro_instr(mac, self.out)
self.out.write_raw("\n")
self.out.write_raw("#undef TIER_ONE\n")