Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
WIP add param for stop iteration value to helper method (unused)
  • Loading branch information
JukkaL committed Jul 8, 2025
commit 8f239bdba6f33acd398ad4dcb516aaaec9d783b1
10 changes: 6 additions & 4 deletions mypyc/irbuild/generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
Unreachable,
Value,
)
from mypyc.ir.rtypes import RInstance, int32_rprimitive, object_rprimitive
from mypyc.ir.rtypes import RInstance, int32_rprimitive, object_rprimitive, object_pointer_rprimitive
from mypyc.irbuild.builder import IRBuilder, calculate_arg_defaults, gen_arg_defaults
from mypyc.irbuild.context import FuncInfo, GeneratorClass
from mypyc.irbuild.env_class import (
Expand Down Expand Up @@ -256,7 +256,7 @@ def add_next_to_generator_class(builder: IRBuilder, fn_info: FuncInfo, fn_decl:
result = builder.add(
Call(
fn_decl,
[builder.self(), none_reg, none_reg, none_reg, none_reg],
[builder.self(), none_reg, none_reg, none_reg, none_reg, Integer(0, object_pointer_rprimitive)],
fn_info.fitem.line,
)
)
Expand All @@ -272,7 +272,7 @@ def add_send_to_generator_class(builder: IRBuilder, fn_info: FuncInfo, fn_decl:
result = builder.add(
Call(
fn_decl,
[builder.self(), none_reg, none_reg, none_reg, builder.read(arg)],
[builder.self(), none_reg, none_reg, none_reg, builder.read(arg), Integer(0, object_pointer_rprimitive)],
fn_info.fitem.line,
)
)
Expand All @@ -297,7 +297,7 @@ def add_throw_to_generator_class(builder: IRBuilder, fn_info: FuncInfo, fn_decl:
result = builder.add(
Call(
fn_decl,
[builder.self(), builder.read(typ), builder.read(val), builder.read(tb), none_reg],
[builder.self(), builder.read(typ), builder.read(val), builder.read(tb), none_reg, Integer(0, object_pointer_rprimitive)],
fn_info.fitem.line,
)
)
Expand Down Expand Up @@ -376,6 +376,8 @@ def setup_env_for_generator_class(builder: IRBuilder) -> None:
exc_tb = builder.add_local(Var("traceback"), object_rprimitive, is_arg=True)
# TODO: Use the right type here instead of object?
exc_arg = builder.add_local(Var("arg"), object_rprimitive, is_arg=True)
stop_iter_value_arg = builder.add_local(Var("stop_iter_value"), object_pointer_rprimitive, is_arg=True)
# TODO: do something with stop_iter_value_arg

cls.exc_regs = (exc_type, exc_val, exc_tb)
cls.send_arg_reg = exc_arg
Expand Down
2 changes: 2 additions & 0 deletions mypyc/irbuild/prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
)
from mypyc.options import CompilerOptions
from mypyc.sametype import is_same_type
from mypyc.ir.rtypes import object_rprimitive, object_pointer_rprimitive


def build_type_map(
Expand Down Expand Up @@ -220,6 +221,7 @@ def create_generator_class_if_needed(
RuntimeArg("value", object_rprimitive),
RuntimeArg("traceback", object_rprimitive),
RuntimeArg("arg", object_rprimitive),
RuntimeArg("stop_iter_ptr", object_pointer_rprimitive),
),
object_rprimitive,
)
Expand Down
2 changes: 1 addition & 1 deletion mypyc/irbuild/statement.py
Original file line number Diff line number Diff line change
Expand Up @@ -960,7 +960,7 @@ def emit_yield_from_or_await(
# Second fast path optimization: call helper directly (see also comment above).
obj = builder.read(iter_reg)
nn = builder.none_object()
m = MethodCall(obj, helper_method, [nn, nn, nn, nn], line)
m = MethodCall(obj, helper_method, [nn, nn, nn, nn, Integer(0, object_pointer_rprimitive)], line)
# Generators have custom error handling, so disable normal error handling.
m.error_kind = ERR_NEVER
_y_init = builder.add(m)
Expand Down