Skip to content

Commit 2b0e4e8

Browse files
committed
Clear attribute definedness bitmaps
1 parent 13f2b33 commit 2b0e4e8

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

mypyc/codegen/emitclass.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -824,7 +824,7 @@ def emit_reuse_dealloc(cl: ClassIR, emitter: Emitter) -> None:
824824
emitter.emit_line(f"if ({prefix}_free_instance == NULL) {{")
825825
emitter.emit_line(f"{prefix}_free_instance = self;")
826826

827-
# TODO: emit_clear_bitmaps(cl, emitter)
827+
emit_clear_bitmaps(cl, emitter)
828828

829829
for base in reversed(cl.base_mro):
830830
for attr, rtype in base.attributes.items():
@@ -834,6 +834,13 @@ def emit_reuse_dealloc(cl: ClassIR, emitter: Emitter) -> None:
834834
emitter.emit_line("}")
835835

836836

837+
def emit_clear_bitmaps(cl: ClassIR, emitter: Emitter) -> None:
838+
"""Emit C code to clear bitmaps that track if attributes have an assigned value."""
839+
for i in range(0, len(cl.bitmap_attrs), BITMAP_BITS):
840+
field = emitter.bitmap_field(i)
841+
emitter.emit_line(f"self->{field} = 0;")
842+
843+
837844
def generate_finalize_for_class(
838845
del_method: FuncIR, finalize_func_name: str, emitter: Emitter
839846
) -> None:

0 commit comments

Comments
 (0)