Skip to content

Commit 8fc5562

Browse files
committed
Refactor cast_type
1 parent 2effea4 commit 8fc5562

File tree

3 files changed

+17
-13
lines changed

3 files changed

+17
-13
lines changed

Tools/cases_generator/generators_common.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,10 @@ def decref_inputs(
264264
self.out.emit(f"{close}({var.name});\n")
265265
for input in storage.inputs:
266266
input.defined = False
267+
#try:
268+
#storage.close_inputs(self.out)
269+
#except StackError as ex:
270+
#raise analysis_error(ex.args[0], tkn)
267271
return True
268272

269273
def kill_inputs(

Tools/cases_generator/optimizer_generator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,11 @@ def write_uop(
154154
var.defined = False
155155
storage = emitter.emit_tokens(override, storage, None)
156156
out.start_line()
157-
storage.flush(out, cast_type="JitOptSymbol *")
157+
storage.flush(out)
158158
else:
159159
emit_default(out, uop, stack)
160160
out.start_line()
161-
stack.flush(out, cast_type="JitOptSymbol *")
161+
stack.flush(out)
162162
except StackError as ex:
163163
raise analysis_error(ex.args[0], prototype.body[0]) # from None
164164

@@ -201,7 +201,7 @@ def generate_abstract_interpreter(
201201
declare_variables(override, out, skip_inputs=False)
202202
else:
203203
declare_variables(uop, out, skip_inputs=True)
204-
stack = Stack(False)
204+
stack = Stack(extract_bits=False, cast_type="JitOptSymbol *")
205205
write_uop(override, uop, out, stack, debug, skip_inputs=(override is None))
206206
out.start_line()
207207
out.emit("break;\n")

Tools/cases_generator/stack.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,13 @@ def array_or_scalar(var: StackItem | Local) -> str:
224224
return "array" if var.is_array() else "scalar"
225225

226226
class Stack:
227-
def __init__(self, extract_bits: bool=True) -> None:
227+
def __init__(self, extract_bits: bool=True, cast_type: str = "uintptr_t") -> None:
228228
self.top_offset = StackOffset.empty()
229229
self.base_offset = StackOffset.empty()
230230
self.variables: list[Local] = []
231231
self.defined: set[str] = set()
232232
self.extract_bits = extract_bits
233+
self.cast_type = cast_type
233234

234235
def pop(self, var: StackItem) -> tuple[str, Local]:
235236
self.top_offset.pop(var)
@@ -298,8 +299,8 @@ def _do_emit(
298299
out: CWriter,
299300
var: StackItem,
300301
base_offset: StackOffset,
301-
cast_type: str = "uintptr_t",
302-
extract_bits: bool = True,
302+
cast_type: str,
303+
extract_bits: bool,
303304
) -> None:
304305
cast = f"({cast_type})" if var.type else ""
305306
bits = ".bits" if cast and extract_bits else ""
@@ -315,17 +316,15 @@ def _adjust_stack_pointer(self, out: CWriter, number: str) -> None:
315316
out.emit(f"stack_pointer += {number};\n")
316317
out.emit("assert(WITHIN_STACK_BOUNDS());\n")
317318

318-
def flush(
319-
self, out: CWriter, cast_type: str = "uintptr_t"
320-
) -> None:
319+
def flush(self, out: CWriter) -> None:
321320
out.start_line()
322321
var_offset = self.base_offset.copy()
323322
for var in self.variables:
324323
if (
325324
var.defined and
326325
not var.in_memory
327326
):
328-
Stack._do_emit(out, var.item, var_offset, cast_type, self.extract_bits)
327+
Stack._do_emit(out, var.item, var_offset, self.cast_type, self.extract_bits)
329328
var.in_memory = True
330329
var_offset.push(var.item)
331330
number = self.top_offset.to_c()
@@ -347,7 +346,7 @@ def as_comment(self) -> str:
347346
)
348347

349348
def copy(self) -> "Stack":
350-
other = Stack(self.extract_bits)
349+
other = Stack(self.extract_bits, self.cast_type)
351350
other.top_offset = self.top_offset.copy()
352351
other.base_offset = self.base_offset.copy()
353352
other.variables = [var.copy() for var in self.variables]
@@ -508,10 +507,10 @@ def locals_cached(self) -> bool:
508507
return True
509508
return False
510509

511-
def flush(self, out: CWriter, cast_type: str = "uintptr_t") -> None:
510+
def flush(self, out: CWriter) -> None:
512511
self.clear_dead_inputs()
513512
self._push_defined_outputs()
514-
self.stack.flush(out, cast_type)
513+
self.stack.flush(out)
515514

516515
def save(self, out: CWriter) -> None:
517516
assert self.spilled >= 0
@@ -637,3 +636,4 @@ def as_comment(self) -> str:
637636
outputs = ", ".join([var.compact_str() for var in self.outputs])
638637
peeks = ", ".join([var.name for var in self.peeks])
639638
return f"{stack_comment[:-2]}{next_line}inputs: {inputs}{next_line}outputs: {outputs}{next_line}peeks: {peeks} */"
639+

0 commit comments

Comments
 (0)