Skip to content

Commit 2ec689d

Browse files
committed
Update more call_c call sites
1 parent 35e300e commit 2ec689d

File tree

7 files changed

+23
-18
lines changed

7 files changed

+23
-18
lines changed

mypyc/irbuild/builder.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
IntOp,
8585
LoadStatic,
8686
Op,
87+
PrimitiveDescription,
8788
RaiseStandardError,
8889
Register,
8990
SetAttr,
@@ -134,7 +135,7 @@
134135
from mypyc.primitives.generic_ops import iter_op, next_op, py_setattr_op
135136
from mypyc.primitives.list_ops import list_get_item_unsafe_op, list_pop_last, to_list
136137
from mypyc.primitives.misc_ops import check_unpack_count_op, get_module_dict_op, import_op
137-
from mypyc.primitives.registry import CFunctionDescription, PrimitiveDescription, function_ops
138+
from mypyc.primitives.registry import CFunctionDescription, function_ops
138139

139140
# These int binary operations can borrow their operands safely, since the
140141
# primitives take this into consideration.
@@ -694,7 +695,7 @@ def assign(self, target: Register | AssignmentTarget, rvalue_reg: Value, line: i
694695
else:
695696
key = self.load_str(target.attr)
696697
boxed_reg = self.builder.box(rvalue_reg)
697-
self.call_c(py_setattr_op, [target.obj, key, boxed_reg], line)
698+
self.primitive_op(py_setattr_op, [target.obj, key, boxed_reg], line)
698699
elif isinstance(target, AssignmentTargetIndex):
699700
target_reg2 = self.gen_method_call(
700701
target.base, "__setitem__", [target.index, rvalue_reg], None, line
@@ -771,7 +772,7 @@ def process_iterator_tuple_assignment_helper(
771772
def process_iterator_tuple_assignment(
772773
self, target: AssignmentTargetTuple, rvalue_reg: Value, line: int
773774
) -> None:
774-
iterator = self.call_c(iter_op, [rvalue_reg], line)
775+
iterator = self.primitive_op(iter_op, [rvalue_reg], line)
775776

776777
# This may be the whole lvalue list if there is no starred value
777778
split_idx = target.star_idx if target.star_idx is not None else len(target.items)
@@ -797,7 +798,7 @@ def process_iterator_tuple_assignment(
797798
# Assign the starred value and all values after it
798799
if target.star_idx is not None:
799800
post_star_vals = target.items[split_idx + 1 :]
800-
iter_list = self.call_c(to_list, [iterator], line)
801+
iter_list = self.primitive_op(to_list, [iterator], line)
801802
iter_list_len = self.builtin_len(iter_list, line)
802803
post_star_len = Integer(len(post_star_vals))
803804
condition = self.binary_op(post_star_len, iter_list_len, "<=", line)

mypyc/irbuild/expression.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ def translate_super_method_call(builder: IRBuilder, expr: CallExpr, callee: Supe
476476
# Grab first argument
477477
vself: Value = builder.self()
478478
if decl.kind == FUNC_CLASSMETHOD:
479-
vself = builder.call_c(type_op, [vself], expr.line)
479+
vself = builder.primitive_op(type_op, [vself], expr.line)
480480
elif builder.fn_info.is_generator:
481481
# For generator classes, the self target is the 6th value
482482
# in the symbol table (which is an ordered dict). This is sort
@@ -953,7 +953,7 @@ def transform_tuple_expr(builder: IRBuilder, expr: TupleExpr) -> Value:
953953
def _visit_tuple_display(builder: IRBuilder, expr: TupleExpr) -> Value:
954954
"""Create a list, then turn it into a tuple."""
955955
val_as_list = _visit_list_display(builder, expr.items, expr.line)
956-
return builder.call_c(list_tuple_op, [val_as_list], expr.line)
956+
return builder.primitive_op(list_tuple_op, [val_as_list], expr.line)
957957

958958

959959
def transform_dict_expr(builder: IRBuilder, expr: DictExpr) -> Value:

mypyc/irbuild/for_helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ def init(self, expr_reg: Value, target_type: RType) -> None:
586586
# for the for-loop. If we are inside of a generator function, spill these into the
587587
# environment class.
588588
builder = self.builder
589-
iter_reg = builder.call_c(iter_op, [expr_reg], self.line)
589+
iter_reg = builder.primitive_op(iter_op, [expr_reg], self.line)
590590
builder.maybe_spill(expr_reg)
591591
self.iter_target = builder.maybe_spill(iter_reg)
592592
self.target_type = target_type

mypyc/irbuild/format_str_tokenizer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -146,12 +146,12 @@ def convert_format_expr_to_str(
146146
if is_str_rprimitive(node_type):
147147
var_str = builder.accept(x)
148148
elif is_int_rprimitive(node_type) or is_short_int_rprimitive(node_type):
149-
var_str = builder.call_c(int_to_str_op, [builder.accept(x)], line)
149+
var_str = builder.primitive_op(int_to_str_op, [builder.accept(x)], line)
150150
else:
151-
var_str = builder.call_c(str_op, [builder.accept(x)], line)
151+
var_str = builder.primitive_op(str_op, [builder.accept(x)], line)
152152
elif format_op == FormatOp.INT:
153153
if is_int_rprimitive(node_type) or is_short_int_rprimitive(node_type):
154-
var_str = builder.call_c(int_to_str_op, [builder.accept(x)], line)
154+
var_str = builder.primitive_op(int_to_str_op, [builder.accept(x)], line)
155155
else:
156156
return None
157157
else:

mypyc/irbuild/function.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,7 @@ def handle_ext_method(builder: IRBuilder, cdef: ClassDef, fdef: FuncDef) -> None
433433

434434
# Set the callable object representing the decorated method as an attribute of the
435435
# extension class.
436-
builder.call_c(py_setattr_op, [typ, builder.load_str(name), decorated_func], fdef.line)
436+
builder.primitive_op(py_setattr_op, [typ, builder.load_str(name), decorated_func], fdef.line)
437437

438438
if fdef.is_property:
439439
# If there is a property setter, it will be processed after the getter,
@@ -973,7 +973,7 @@ def generate_singledispatch_callable_class_ctor(builder: IRBuilder) -> None:
973973
cache_dict = builder.call_c(dict_new_op, [], line)
974974
dispatch_cache_str = builder.load_str("dispatch_cache")
975975
# use the py_setattr_op instead of SetAttr so that it also gets added to our __dict__
976-
builder.call_c(py_setattr_op, [builder.self(), dispatch_cache_str, cache_dict], line)
976+
builder.primitive_op(py_setattr_op, [builder.self(), dispatch_cache_str, cache_dict], line)
977977
# the generated C code seems to expect that __init__ returns a char, so just return 1
978978
builder.add(Return(Integer(1, bool_rprimitive, line), line))
979979

@@ -1016,7 +1016,7 @@ def maybe_insert_into_registry_dict(builder: IRBuilder, fitem: FuncDef) -> None:
10161016
registry_dict = builder.builder.make_dict([(loaded_object_type, main_func_obj)], line)
10171017

10181018
dispatch_func_obj = builder.load_global_str(fitem.name, line)
1019-
builder.call_c(
1019+
builder.primitive_op(
10201020
py_setattr_op, [dispatch_func_obj, builder.load_str("registry"), registry_dict], line
10211021
)
10221022

mypyc/irbuild/match.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ def visit_class_pattern(self, pattern: ClassPattern) -> None:
131131
else slow_isinstance_op
132132
)
133133

134-
cond = self.builder.call_c(
134+
cond = self.builder.primitive_op(
135135
isinstance_op, [self.subject, self.builder.accept(pattern.class_ref)], pattern.line
136136
)
137137

@@ -246,7 +246,7 @@ def visit_mapping_pattern(self, pattern: MappingPattern) -> None:
246246
self.builder.activate_block(self.code_block)
247247
self.code_block = BasicBlock()
248248

249-
rest = self.builder.call_c(dict_copy, [self.subject], pattern.rest.line)
249+
rest = self.builder.primitive_op(dict_copy, [self.subject], pattern.rest.line)
250250

251251
target = self.builder.get_assignment_target(pattern.rest)
252252

mypyc/irbuild/statement.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
LoadLiteral,
5959
LoadStatic,
6060
MethodCall,
61+
PrimitiveDescription,
6162
RaiseStandardError,
6263
Register,
6364
Return,
@@ -757,7 +758,7 @@ def transform_with(
757758
value = builder.add(MethodCall(mgr_v, f"__{al}enter__", args=[], line=line))
758759
exit_ = None
759760
else:
760-
typ = builder.call_c(type_op, [mgr_v], line)
761+
typ = builder.primitive_op(type_op, [mgr_v], line)
761762
exit_ = builder.maybe_spill(builder.py_get_attr(typ, f"__{al}exit__", line))
762763
value = builder.py_call(builder.py_get_attr(typ, f"__{al}enter__", line), [mgr_v], line)
763764

@@ -876,7 +877,7 @@ def transform_del_item(builder: IRBuilder, target: AssignmentTarget, line: int)
876877
line,
877878
)
878879
key = builder.load_str(target.attr)
879-
builder.call_c(py_delattr_op, [target.obj, key], line)
880+
builder.primitive_op(py_delattr_op, [target.obj, key], line)
880881
elif isinstance(target, AssignmentTargetRegister):
881882
# Delete a local by assigning an error value to it, which will
882883
# prompt the insertion of uninit checks.
@@ -924,7 +925,10 @@ def emit_yield_from_or_await(
924925
received_reg = Register(object_rprimitive)
925926

926927
get_op = coro_op if is_await else iter_op
927-
iter_val = builder.call_c(get_op, [val], line)
928+
if isinstance(get_op, PrimitiveDescription):
929+
iter_val = builder.primitive_op(get_op, [val], line)
930+
else:
931+
iter_val = builder.call_c(get_op, [val], line)
928932

929933
iter_reg = builder.maybe_spill_assignable(iter_val)
930934

0 commit comments

Comments
 (0)