remove inc functions from list.map*, the closure will inc in necessary

This commit is contained in:
Brendan Hansknecht 2024-07-11 17:33:30 -07:00
parent 6712824891
commit 94cb4fb8ff
No known key found for this signature in database
GPG key ID: 0EA784685083E75B
4 changed files with 0 additions and 61 deletions

View file

@ -362,7 +362,6 @@ pub fn listMap(
alignment: u32,
old_element_width: usize,
new_element_width: usize,
inc_old_element: Inc,
new_elements_refcount: bool,
) callconv(.C) RocList {
if (list.bytes) |source_ptr| {
@ -377,7 +376,6 @@ pub fn listMap(
while (i < size) : (i += 1) {
const element = source_ptr + (i * old_element_width);
inc_old_element(element);
caller(data, element, target_ptr + (i * new_element_width));
}
@ -398,8 +396,6 @@ pub fn listMap2(
a_width: usize,
b_width: usize,
c_width: usize,
inc_a: Inc,
inc_b: Inc,
c_elements_refcounted: bool,
) callconv(.C) RocList {
const output_length = @min(list1.len(), list2.len());
@ -419,9 +415,6 @@ pub fn listMap2(
const element_b = source_b + i * b_width;
const target = target_ptr + i * c_width;
inc_a(element_a);
inc_b(element_b);
caller(data, element_a, element_b, target);
}
@ -447,9 +440,6 @@ pub fn listMap3(
b_width: usize,
c_width: usize,
d_width: usize,
inc_a: Inc,
inc_b: Inc,
inc_c: Inc,
d_elements_refcounted: bool,
) callconv(.C) RocList {
const smaller_length = @min(list1.len(), list2.len());
@ -472,10 +462,6 @@ pub fn listMap3(
const element_c = source_c + i * c_width;
const target = target_ptr + i * d_width;
inc_a(element_a);
inc_b(element_b);
inc_c(element_c);
caller(data, element_a, element_b, element_c, target);
}
@ -506,10 +492,6 @@ pub fn listMap4(
c_width: usize,
d_width: usize,
e_width: usize,
inc_a: Inc,
inc_b: Inc,
inc_c: Inc,
inc_d: Inc,
e_elements_refcounted: bool,
) callconv(.C) RocList {
const output_length = @min(@min(list1.len(), list2.len()), @min(list3.len(), list4.len()));
@ -534,11 +516,6 @@ pub fn listMap4(
const target = target_ptr + i * e_width;
inc_a(element_a);
inc_b(element_b);
inc_c(element_c);
inc_d(element_d);
caller(data, element_a, element_b, element_c, element_d, target);
}

View file

@ -568,14 +568,11 @@ pub(crate) fn list_sort_with<'a, 'ctx>(
pub(crate) fn list_map<'a, 'ctx>(
env: &Env<'a, 'ctx, '_>,
layout_interner: &STLayoutInterner<'a>,
layout_ids: &mut LayoutIds<'a>,
roc_function_call: RocFunctionCall<'ctx>,
list: BasicValueEnum<'ctx>,
element_layout: InLayout<'a>,
return_layout: InLayout<'a>,
) -> BasicValueEnum<'ctx> {
let inc_elem = build_inc_wrapper(env, layout_interner, layout_ids, element_layout);
call_list_bitcode_fn_1(
env,
list.into_struct_value(),
@ -587,7 +584,6 @@ pub(crate) fn list_map<'a, 'ctx>(
env.alignment_intvalue(layout_interner, return_layout),
layout_width(env, layout_interner, element_layout),
layout_width(env, layout_interner, return_layout),
inc_elem.as_global_value().as_pointer_value().into(),
layout_refcounted(env, layout_interner, return_layout),
],
bitcode::LIST_MAP,
@ -597,7 +593,6 @@ pub(crate) fn list_map<'a, 'ctx>(
pub(crate) fn list_map2<'a, 'ctx>(
env: &Env<'a, 'ctx, '_>,
layout_interner: &STLayoutInterner<'a>,
layout_ids: &mut LayoutIds<'a>,
roc_function_call: RocFunctionCall<'ctx>,
list1: BasicValueEnum<'ctx>,
list2: BasicValueEnum<'ctx>,
@ -605,9 +600,6 @@ pub(crate) fn list_map2<'a, 'ctx>(
element2_layout: InLayout<'a>,
return_layout: InLayout<'a>,
) -> BasicValueEnum<'ctx> {
let inc_a = build_inc_wrapper(env, layout_interner, layout_ids, element1_layout);
let inc_b = build_inc_wrapper(env, layout_interner, layout_ids, element2_layout);
call_list_bitcode_fn(
env,
&[list1.into_struct_value(), list2.into_struct_value()],
@ -620,8 +612,6 @@ pub(crate) fn list_map2<'a, 'ctx>(
layout_width(env, layout_interner, element1_layout),
layout_width(env, layout_interner, element2_layout),
layout_width(env, layout_interner, return_layout),
inc_a.as_global_value().as_pointer_value().into(),
inc_b.as_global_value().as_pointer_value().into(),
layout_refcounted(env, layout_interner, return_layout),
],
BitcodeReturns::List,
@ -632,7 +622,6 @@ pub(crate) fn list_map2<'a, 'ctx>(
pub(crate) fn list_map3<'a, 'ctx>(
env: &Env<'a, 'ctx, '_>,
layout_interner: &STLayoutInterner<'a>,
layout_ids: &mut LayoutIds<'a>,
roc_function_call: RocFunctionCall<'ctx>,
list1: BasicValueEnum<'ctx>,
list2: BasicValueEnum<'ctx>,
@ -642,10 +631,6 @@ pub(crate) fn list_map3<'a, 'ctx>(
element3_layout: InLayout<'a>,
result_layout: InLayout<'a>,
) -> BasicValueEnum<'ctx> {
let inc_a = build_inc_wrapper(env, layout_interner, layout_ids, element1_layout);
let inc_b = build_inc_wrapper(env, layout_interner, layout_ids, element2_layout);
let inc_c = build_inc_wrapper(env, layout_interner, layout_ids, element3_layout);
call_list_bitcode_fn(
env,
&[
@ -663,9 +648,6 @@ pub(crate) fn list_map3<'a, 'ctx>(
layout_width(env, layout_interner, element2_layout),
layout_width(env, layout_interner, element3_layout),
layout_width(env, layout_interner, result_layout),
inc_a.as_global_value().as_pointer_value().into(),
inc_b.as_global_value().as_pointer_value().into(),
inc_c.as_global_value().as_pointer_value().into(),
layout_refcounted(env, layout_interner, result_layout),
],
BitcodeReturns::List,
@ -676,7 +658,6 @@ pub(crate) fn list_map3<'a, 'ctx>(
pub(crate) fn list_map4<'a, 'ctx>(
env: &Env<'a, 'ctx, '_>,
layout_interner: &STLayoutInterner<'a>,
layout_ids: &mut LayoutIds<'a>,
roc_function_call: RocFunctionCall<'ctx>,
list1: BasicValueEnum<'ctx>,
list2: BasicValueEnum<'ctx>,
@ -688,11 +669,6 @@ pub(crate) fn list_map4<'a, 'ctx>(
element4_layout: InLayout<'a>,
result_layout: InLayout<'a>,
) -> BasicValueEnum<'ctx> {
let inc_a = build_inc_wrapper(env, layout_interner, layout_ids, element1_layout);
let inc_b = build_inc_wrapper(env, layout_interner, layout_ids, element2_layout);
let inc_c = build_inc_wrapper(env, layout_interner, layout_ids, element3_layout);
let inc_d = build_inc_wrapper(env, layout_interner, layout_ids, element4_layout);
call_list_bitcode_fn(
env,
&[
@ -712,10 +688,6 @@ pub(crate) fn list_map4<'a, 'ctx>(
layout_width(env, layout_interner, element3_layout),
layout_width(env, layout_interner, element4_layout),
layout_width(env, layout_interner, result_layout),
inc_a.as_global_value().as_pointer_value().into(),
inc_b.as_global_value().as_pointer_value().into(),
inc_c.as_global_value().as_pointer_value().into(),
inc_d.as_global_value().as_pointer_value().into(),
layout_refcounted(env, layout_interner, result_layout),
],
BitcodeReturns::List,

View file

@ -2842,7 +2842,6 @@ pub(crate) fn run_higher_order_low_level<'a, 'ctx>(
list_map(
env,
layout_interner,
layout_ids,
roc_function_call,
list,
element_layout,
@ -2885,7 +2884,6 @@ pub(crate) fn run_higher_order_low_level<'a, 'ctx>(
list_map2(
env,
layout_interner,
layout_ids,
roc_function_call,
list1,
list2,
@ -2933,7 +2931,6 @@ pub(crate) fn run_higher_order_low_level<'a, 'ctx>(
list_map3(
env,
layout_interner,
layout_ids,
roc_function_call,
list1,
list2,
@ -2991,7 +2988,6 @@ pub(crate) fn run_higher_order_low_level<'a, 'ctx>(
list_map4(
env,
layout_interner,
layout_ids,
roc_function_call,
list1,
list2,

View file

@ -2958,12 +2958,6 @@ fn list_map_n<'a>(
}
cb.i32_const(elem_ret_size as i32);
// We need to be able to increment the refcount of elements loaded.
for el in arg_elem_layouts.iter() {
let ptr = build_refcount_element_fn(backend, *el, HelperOp::IndirectInc);
backend.code_builder.i32_const(ptr);
}
backend.code_builder.i32_const(elem_ret_refcounted as i32);
backend.call_host_fn_after_loading_args(zig_fn_name);
}