File tree Expand file tree Collapse file tree 1 file changed +8
-1
lines changed Expand file tree Collapse file tree 1 file changed +8
-1
lines changed Original file line number Diff line number Diff 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+
837844def generate_finalize_for_class (
838845 del_method : FuncIR , finalize_func_name : str , emitter : Emitter
839846) -> None :
You can’t perform that action at this time.
0 commit comments