Skip to content

Commit 27656a3

Browse files
committed
Add comments
1 parent a08363f commit 27656a3

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

mypyc/irbuild/for_helpers.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,13 +659,18 @@ def gen_condition(self) -> None:
659659
self.return_value = Register(object_rprimitive)
660660
err = builder.add(LoadErrorValue(object_rprimitive, undefines=True))
661661
builder.assign(self.return_value, err, line)
662+
663+
# Call generated generator helper method, passing a PyObject ** as the final
664+
# argument that will be used to store the return value in this register. This
665+
# is faster than raising StopIteration.
662666
ptr = builder.add(LoadAddress(object_pointer_rprimitive, self.return_value))
663667
nn = builder.none_object()
664668
helper_call = MethodCall(
665669
builder.read(self.iter_target), GENERATOR_HELPER_NAME, [nn, nn, nn, nn, ptr], line
666670
)
667671
# We provide custom handling for error values.
668672
helper_call.error_kind = ERR_NEVER
673+
669674
self.next_reg = builder.add(helper_call)
670675
builder.add(Branch(self.next_reg, self.loop_exit, self.body_block, Branch.IS_ERROR))
671676

@@ -684,6 +689,8 @@ def gen_step(self) -> None:
684689
pass
685690

686691
def gen_cleanup(self) -> None:
692+
# If return value is NULL (it wasn't assigned to by the generator helper method),
693+
# an exception was raised.
687694
self.builder.primitive_op(propagate_if_error_op, [self.return_value], self.line)
688695

689696

0 commit comments

Comments
 (0)