diff --git a/compiler/gen_llvm/src/llvm/refcounting.rs b/compiler/gen_llvm/src/llvm/refcounting.rs index 4e96a106f7..1c2ff6a3f3 100644 --- a/compiler/gen_llvm/src/llvm/refcounting.rs +++ b/compiler/gen_llvm/src/llvm/refcounting.rs @@ -1700,68 +1700,3 @@ fn modify_refcount_union_help<'a, 'ctx, 'env>( // this function returns void builder.build_return(None); } - -pub fn refcount_is_one_comparison<'a, 'ctx, 'env>( - env: &Env<'a, 'ctx, 'env>, - refcount: IntValue<'ctx>, -) -> IntValue<'ctx> { - env.builder.build_int_compare( - IntPredicate::EQ, - refcount, - refcount_1(env.context, env.ptr_bytes), - "refcount_one_check", - ) -} - -pub fn list_get_refcount_ptr<'a, 'ctx, 'env>( - env: &Env<'a, 'ctx, 'env>, - layout: &Layout<'a>, - list_wrapper: StructValue<'ctx>, -) -> PointerValue<'ctx> { - // fetch the pointer to the array data, as an integer - let ptr_as_int = env - .builder - .build_extract_value(list_wrapper, Builtin::WRAPPER_PTR, "read_list_ptr") - .unwrap() - .into_int_value(); - - get_refcount_ptr_help(env, layout, ptr_as_int) -} - -pub fn refcount_offset<'a, 'ctx, 'env>(env: &Env<'a, 'ctx, 'env>, layout: &Layout<'a>) -> u64 { - let value_bytes = layout.stack_size(env.ptr_bytes) as u64; - - match layout { - Layout::Builtin(Builtin::List(_)) => env.ptr_bytes as u64, - Layout::Builtin(Builtin::Str) => env.ptr_bytes as u64, - Layout::RecursivePointer | Layout::Union(_) => env.ptr_bytes as u64, - _ => (env.ptr_bytes as u64).max(value_bytes), - } -} - -fn get_refcount_ptr_help<'a, 'ctx, 'env>( - env: &Env<'a, 'ctx, 'env>, - layout: &Layout<'a>, - ptr_as_int: IntValue<'ctx>, -) -> PointerValue<'ctx> { - let builder = env.builder; - let ctx = env.context; - - let offset = refcount_offset(env, layout); - - // pointer to usize - let refcount_type = ptr_int(ctx, env.ptr_bytes); - - // subtract offset, to access the refcount - let refcount_ptr = builder.build_int_sub( - ptr_as_int, - refcount_type.const_int(offset, false), - "make_refcount_ptr", - ); - - builder.build_int_to_ptr( - refcount_ptr, - refcount_type.ptr_type(AddressSpace::Generic), - "get_refcount_ptr", - ) -}