MCPcopy Index your code
hub / github.com/python/mypy / check_for_uninit_using_bitmap

Function check_for_uninit_using_bitmap

mypyc/transform/uninit.py:137–168  ·  view source on GitHub ↗

Check if src is defined using a bitmap. Modifies ops, bitmap_registers and bitmap_backed.

(
    ops: list[Op],
    src: Register,
    bitmap_registers: list[Register],
    bitmap_backed: list[Register],
    error_block: BasicBlock,
    ok_block: BasicBlock,
    line: int,
)

Source from the content-addressed store, hash-verified

135
136
137def check_for_uninit_using_bitmap(
138 ops: list[Op],
139 src: Register,
140 bitmap_registers: list[Register],
141 bitmap_backed: list[Register],
142 error_block: BasicBlock,
143 ok_block: BasicBlock,
144 line: int,
145) -> None:
146 """Check if src is defined using a bitmap.
147
148 Modifies ops, bitmap_registers and bitmap_backed.
149 """
150 if src not in bitmap_backed:
151 # Set up a new bitmap backed register.
152 bitmap_backed.append(src)
153 n = (len(bitmap_backed) - 1) // BITMAP_BITS
154 if len(bitmap_registers) <= n:
155 bitmap_registers.append(Register(bitmap_rprimitive, f"__locals_bitmap{n}"))
156
157 index = bitmap_backed.index(src)
158 masked = IntOp(
159 bitmap_rprimitive,
160 bitmap_registers[index // BITMAP_BITS],
161 Integer(1 << (index & (BITMAP_BITS - 1)), bitmap_rprimitive),
162 IntOp.AND,
163 line,
164 )
165 ops.append(masked)
166 chk = ComparisonOp(masked, Integer(0, bitmap_rprimitive), ComparisonOp.EQ)
167 ops.append(chk)
168 ops.append(Branch(chk, error_block, ok_block, Branch.BOOL))
169
170
171def update_register_assignments_to_set_bitmap(

Callers 1

split_blocks_at_uninitsFunction · 0.85

Calls 8

RegisterClass · 0.90
IntOpClass · 0.90
IntegerClass · 0.90
ComparisonOpClass · 0.90
BranchClass · 0.90
lenFunction · 0.85
appendMethod · 0.80
indexMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…