Skip to content

Commit c205455

Browse files
committed
Cargo cult the RArray helper added earlier
1 parent 8e9baa8 commit c205455

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

mypyc/irbuild/ll_builder.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -853,10 +853,8 @@ def _py_vector_call(
853853
):
854854
if arg_values:
855855
# Create a C array containing all arguments as boxed values.
856-
array = Register(RArray(object_rprimitive, len(arg_values)))
857856
coerced_args = [self.coerce(arg, object_rprimitive, line) for arg in arg_values]
858-
self.add(AssignMulti(array, coerced_args))
859-
arg_ptr = self.add(LoadAddress(object_pointer_rprimitive, array))
857+
arg_ptr = self.setup_rarray(object_rprimitive, coerced_args, object_ptr=True)
860858
else:
861859
arg_ptr = Integer(0, object_pointer_rprimitive)
862860
num_pos = num_positional_args(arg_values, arg_kinds)
@@ -930,13 +928,10 @@ def _py_vector_method_call(
930928
not kind.is_star() and not kind.is_optional() for kind in arg_kinds
931929
):
932930
method_name_reg = self.load_str(method_name)
933-
array = Register(RArray(object_rprimitive, len(arg_values) + 1))
934-
self_arg = self.coerce(obj, object_rprimitive, line)
935-
coerced_args = [self_arg] + [
936-
self.coerce(arg, object_rprimitive, line) for arg in arg_values
931+
coerced_args = [
932+
self.coerce(arg, object_rprimitive, line) for arg in [obj] + arg_values
937933
]
938-
self.add(AssignMulti(array, coerced_args))
939-
arg_ptr = self.add(LoadAddress(object_pointer_rprimitive, array))
934+
arg_ptr = self.setup_rarray(object_rprimitive, coerced_args, object_ptr=True)
940935
num_pos = num_positional_args(arg_values, arg_kinds)
941936
keywords = self._vectorcall_keywords(arg_names)
942937
value = self.call_c(
@@ -1693,11 +1688,15 @@ def new_list_op(self, values: list[Value], line: int) -> Value:
16931688
def new_set_op(self, values: list[Value], line: int) -> Value:
16941689
return self.call_c(new_set_op, values, line)
16951690

1696-
def setup_rarray(self, item_type: RType, values: Sequence[Value]) -> Value:
1691+
def setup_rarray(
1692+
self, item_type: RType, values: Sequence[Value], *, object_ptr: bool = False
1693+
) -> Value:
16971694
"""Declare and initialize a new RArray, returning its address."""
16981695
array = Register(RArray(item_type, len(values)))
16991696
self.add(AssignMulti(array, list(values)))
1700-
return self.add(LoadAddress(c_pointer_rprimitive, array))
1697+
return self.add(
1698+
LoadAddress(object_pointer_rprimitive if object_ptr else c_pointer_rprimitive, array)
1699+
)
17011700

17021701
def shortcircuit_helper(
17031702
self,

0 commit comments

Comments
 (0)