Skip to content

Commit 4a9354c

Browse files
committed
Remove SymbolTable and WorkList from codegen classes QASM and STIM. Code generation base EmitABC now contains them.
1 parent 869b588 commit 4a9354c

File tree

4 files changed

+3
-44
lines changed

4 files changed

+3
-44
lines changed

src/bloqade/qasm2/emit/base.py

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -82,31 +82,3 @@ def assert_node(
8282
if not isinstance(node, typ):
8383
raise TypeError(f"expected {typ}, got {type(node)}")
8484
return node
85-
86-
87-
@dataclass
88-
class SymbolTable(idtable.IdTable[ir.Statement]):
89-
def add(self, value: ir.Statement) -> str:
90-
id = self.next_id
91-
if (trait := value.get_trait(ir.SymbolOpInterface)) is not None:
92-
value_name = trait.get_sym_name(value).unwrap()
93-
curr_ind = self.name_count.get(value_name, 0)
94-
suffix = f"_{curr_ind}" if curr_ind != 0 else ""
95-
self.name_count[value_name] = curr_ind + 1
96-
name = self.prefix + value_name + suffix
97-
self.table[value] = name
98-
else:
99-
name = f"{self.prefix}{self.prefix_if_none}{id}"
100-
self.next_id += 1
101-
self.table[value] = name
102-
return name
103-
104-
def __getitem__(self, value: ir.Statement) -> str:
105-
if value in self.table:
106-
return self.table[value]
107-
raise KeyError(f"Symbol {value} not found in SymbolTable")
108-
109-
def get(self, value: ir.Statement, default: str | None = None) -> str | None:
110-
if value in self.table:
111-
return self.table[value]
112-
return default

src/bloqade/qasm2/emit/gate.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22

33
from kirin import ir, types, interp
44
from kirin.dialects import py, func, ilist
5-
from kirin.worklist import WorkList
65
from kirin.ir.dialect import Dialect as Dialect
76
from typing_extensions import Self
87

98
from bloqade.types import QubitType
109
from bloqade.qasm2.parse import ast
1110

12-
from .base import SymbolTable, EmitQASM2Base, EmitQASM2Frame
11+
from .base import EmitQASM2Base, EmitQASM2Frame
1312

1413

1514
def _default_dialect_group():
@@ -25,9 +24,6 @@ class EmitQASM2Gate(EmitQASM2Base[ast.UOp | ast.Barrier, ast.Gate]):
2524

2625
def initialize(self) -> Self:
2726
super().initialize()
28-
if getattr(self, "callables", None) is None:
29-
self.callables = SymbolTable(prefix="")
30-
self.callable_to_emit = WorkList()
3127
return self
3228

3329
def run(self, node: ir.Method | ir.Statement):

src/bloqade/qasm2/emit/main.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,26 @@
11
from typing import List, cast
2-
from dataclasses import field, dataclass
2+
from dataclasses import dataclass
33

44
from kirin import ir, interp
55
from kirin.dialects import cf, scf, func
6-
from kirin.worklist import WorkList
76
from kirin.ir.dialect import Dialect as Dialect
87
from typing_extensions import Self
98

109
from bloqade.qasm2.parse import ast
1110
from bloqade.qasm2.dialects.uop import SingleQubitGate, TwoQubitCtrlGate
1211
from bloqade.qasm2.dialects.expr import GateFunction
1312

14-
from .base import SymbolTable, EmitQASM2Base, EmitQASM2Frame
13+
from .base import EmitQASM2Base, EmitQASM2Frame
1514
from ..dialects.core.stmts import Reset, Measure
1615

1716

1817
@dataclass
1918
class EmitQASM2Main(EmitQASM2Base[ast.Statement, ast.MainProgram]):
2019
keys = ("emit.qasm2.main", "emit.qasm2.gate")
2120
dialects: ir.DialectGroup
22-
callable_to_emit: WorkList[ir.Statement] = field(init=False)
2321

2422
def initialize(self) -> Self:
2523
super().initialize()
26-
self.callables: SymbolTable = SymbolTable(prefix="")
27-
self.callable_to_emit = WorkList()
2824
return self
2925

3026
def run(self, node: ir.Method | ir.Statement):

src/bloqade/stim/emit/stim_str.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from kirin.idtable import IdTable
88
from kirin.dialects import func
99
from kirin.emit.abc import EmitABC, EmitFrame
10-
from kirin.worklist import WorkList
1110

1211
IO_t = TypeVar("IO_t", bound=IO)
1312

@@ -43,14 +42,10 @@ class EmitStimMain(EmitABC[EmitStimFrame, str], Generic[IO_t]):
4342
io: IO_t = cast(IO_t, sys.stdout)
4443
keys = ("emit.stim",)
4544
void = ""
46-
callables: IdTable[ir.Statement] = field(init=False)
47-
callable_to_emit: WorkList[ir.Statement] = field(init=False)
4845
correlation_identifier_offset: int = 0
4946

5047
def initialize(self) -> "EmitStimMain":
5148
super().initialize()
52-
self.callables: IdTable[ir.Statement] = IdTable(prefix="fn_")
53-
self.callable_to_emit: WorkList[ir.Statement] = WorkList()
5449
self.correlated_error_count = self.correlation_identifier_offset
5550
return self
5651

0 commit comments

Comments
 (0)