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

Class ForInfiniteCounter

mypyc/irbuild/for_helpers.py:1179–1204  ·  view source on GitHub ↗

Generate optimized IR for a for loop counting from 0 to infinity.

Source from the content-addressed store, hash-verified

1177
1178
1179class ForInfiniteCounter(ForGenerator):
1180 """Generate optimized IR for a for loop counting from 0 to infinity."""
1181
1182 def init(self) -> None:
1183 builder = self.builder
1184 # Create a register to store the state of the loop index and
1185 # initialize this register along with the loop index to 0.
1186 zero = Integer(0)
1187 self.index_reg = builder.maybe_spill_assignable(zero)
1188 self.index_target: Register | AssignmentTarget = builder.get_assignment_target(self.index)
1189
1190 def gen_step(self) -> None:
1191 builder = self.builder
1192 line = self.line
1193 # We can safely assume that the integer is short, since we are not going to wrap
1194 # around a 63-bit integer.
1195 # NOTE: This would be questionable if short ints could be 32 bits.
1196 new_val = builder.int_op(
1197 short_int_rprimitive, builder.read(self.index_reg, line), Integer(1), IntOp.ADD, line
1198 )
1199 builder.assign(self.index_reg, new_val, line)
1200
1201 def begin_body(self) -> None:
1202 self.builder.assign(
1203 self.index_target, self.builder.read(self.index_reg, self.line), self.line
1204 )
1205
1206
1207class ForEnumerate(ForGenerator):

Callers 1

initMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…