mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-29 23:04:49 +00:00
preparation for using argument_type_from_layout
This commit is contained in:
parent
5aefc62ecf
commit
3cc96e76dc
2 changed files with 12 additions and 3 deletions
|
@ -132,6 +132,15 @@ pub fn argument_type_from_layout<'a, 'ctx, 'env>(
|
||||||
argument_type_from_layout(env, &lambda_set.runtime_representation())
|
argument_type_from_layout(env, &lambda_set.runtime_representation())
|
||||||
}
|
}
|
||||||
Union(union_layout) => argument_type_from_union_layout(env, union_layout),
|
Union(union_layout) => argument_type_from_union_layout(env, union_layout),
|
||||||
|
Builtin(_) => {
|
||||||
|
let base = basic_type_from_layout(env, layout);
|
||||||
|
|
||||||
|
if layout.is_passed_by_reference() {
|
||||||
|
base.ptr_type(AddressSpace::Generic).into()
|
||||||
|
} else {
|
||||||
|
base
|
||||||
|
}
|
||||||
|
}
|
||||||
other => basic_type_from_layout(env, other),
|
other => basic_type_from_layout(env, other),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ use roc_module::symbol::Symbol;
|
||||||
use roc_mono::layout::{Builtin, Layout, LayoutIds, UnionLayout};
|
use roc_mono::layout::{Builtin, Layout, LayoutIds, UnionLayout};
|
||||||
use roc_target::TargetInfo;
|
use roc_target::TargetInfo;
|
||||||
|
|
||||||
use super::convert::argument_type_from_union_layout;
|
use super::convert::{argument_type_from_layout, argument_type_from_union_layout};
|
||||||
|
|
||||||
/// "Infinite" reference count, for static values
|
/// "Infinite" reference count, for static values
|
||||||
/// Ref counts are encoded as negative numbers where isize::MIN represents 1
|
/// Ref counts are encoded as negative numbers where isize::MIN represents 1
|
||||||
|
@ -687,7 +687,7 @@ fn modify_refcount_list<'a, 'ctx, 'env>(
|
||||||
let function = match env.module.get_function(fn_name.as_str()) {
|
let function = match env.module.get_function(fn_name.as_str()) {
|
||||||
Some(function_value) => function_value,
|
Some(function_value) => function_value,
|
||||||
None => {
|
None => {
|
||||||
let basic_type = basic_type_from_layout(env, layout);
|
let basic_type = argument_type_from_layout(env, layout);
|
||||||
let function_value = build_header(env, basic_type, mode, &fn_name);
|
let function_value = build_header(env, basic_type, mode, &fn_name);
|
||||||
|
|
||||||
modify_refcount_list_help(
|
modify_refcount_list_help(
|
||||||
|
@ -824,7 +824,7 @@ fn modify_refcount_str<'a, 'ctx, 'env>(
|
||||||
let function = match env.module.get_function(fn_name.as_str()) {
|
let function = match env.module.get_function(fn_name.as_str()) {
|
||||||
Some(function_value) => function_value,
|
Some(function_value) => function_value,
|
||||||
None => {
|
None => {
|
||||||
let basic_type = basic_type_from_layout(env, layout);
|
let basic_type = argument_type_from_layout(env, layout);
|
||||||
let function_value = build_header(env, basic_type, mode, &fn_name);
|
let function_value = build_header(env, basic_type, mode, &fn_name);
|
||||||
|
|
||||||
modify_refcount_str_help(env, mode, layout, function_value);
|
modify_refcount_str_help(env, mode, layout, function_value);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue