Skip to content

Commit

Permalink
Remove support for legacy bytecode instructions (#105705)
Browse files Browse the repository at this point in the history
(A legacy instruction is of the form `instr(FOOBAR)`,
i.e. missing the `(... -- ...)` stack/cache effect annotation.)
  • Loading branch information
gvanrossum committed Jun 12, 2023
1 parent b9e7dc7 commit 9544948
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 22 deletions.
4 changes: 1 addition & 3 deletions Tools/cases_generator/generate_cases.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ class Instruction:

# Parts of the underlying instruction definition
inst: parser.InstDef
kind: typing.Literal["inst", "op", "legacy"] # Legacy means no (input -- output)
kind: typing.Literal["inst", "op"]
name: str
block: parser.Block
block_text: list[str] # Block.text, less curlies, less PREDICT() calls
Expand Down Expand Up @@ -856,8 +856,6 @@ def get_stack_effect_info(
self, thing: parser.InstDef | parser.Macro | parser.Pseudo
) -> tuple[AnyInstruction | None, str, str]:
def effect_str(effects: list[StackEffect]) -> str:
if getattr(thing, "kind", None) == "legacy":
return str(-1)
n_effect, sym_effect = list_effect_size(effects)
if sym_effect:
return f"{sym_effect} + {n_effect}" if n_effect else sym_effect
Expand Down
7 changes: 2 additions & 5 deletions Tools/cases_generator/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class OpName(Node):
class InstHeader(Node):
override: bool
register: bool
kind: Literal["inst", "op", "legacy"] # Legacy means no (inputs -- outputs)
kind: Literal["inst", "op"]
name: str
inputs: list[InputEffect]
outputs: list[OutputEffect]
Expand All @@ -111,7 +111,7 @@ class InstHeader(Node):
class InstDef(Node):
override: bool
register: bool
kind: Literal["inst", "op", "legacy"]
kind: Literal["inst", "op"]
name: str
inputs: list[InputEffect]
outputs: list[OutputEffect]
Expand Down Expand Up @@ -174,9 +174,6 @@ def inst_header(self) -> InstHeader | None:
if self.expect(lx.RPAREN):
if (tkn := self.peek()) and tkn.kind == lx.LBRACE:
return InstHeader(override, register, kind, name, inp, outp)
elif self.expect(lx.RPAREN) and kind == "inst":
# No legacy stack effect if kind is "op".
return InstHeader(override, register, "legacy", name, [], [])
return None

def io_effect(self) -> tuple[list[InputEffect], list[OutputEffect]]:
Expand Down
14 changes: 0 additions & 14 deletions Tools/cases_generator/test_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,20 +62,6 @@ def run_cases_test(input: str, expected: str):
# print("End")
assert actual.rstrip() == expected.rstrip()

def test_legacy():
input = """
inst(OP) {
spam();
}
"""
output = """
TARGET(OP) {
spam();
DISPATCH();
}
"""
run_cases_test(input, output)

def test_inst_no_args():
input = """
inst(OP, (--)) {
Expand Down

0 comments on commit 9544948

Please sign in to comment.