mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 15:21:12 +00:00
Consistently cast string length to usize
This commit is contained in:
parent
e3d0145894
commit
d1b1fd3a6a
1 changed files with 4 additions and 4 deletions
|
@ -203,6 +203,7 @@ pub fn str_concat<'a, 'ctx, 'env>(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Obtain the string's length, cast from i8 to usize
|
||||||
fn str_len_from_final_byte<'a, 'ctx, 'env>(
|
fn str_len_from_final_byte<'a, 'ctx, 'env>(
|
||||||
env: &Env<'a, 'ctx, 'env>,
|
env: &Env<'a, 'ctx, 'env>,
|
||||||
final_byte: IntValue<'ctx>,
|
final_byte: IntValue<'ctx>,
|
||||||
|
@ -210,8 +211,9 @@ fn str_len_from_final_byte<'a, 'ctx, 'env>(
|
||||||
let builder = env.builder;
|
let builder = env.builder;
|
||||||
let ctx = env.context;
|
let ctx = env.context;
|
||||||
let bitmask = ctx.i8_type().const_int(0b0111_1111, false);
|
let bitmask = ctx.i8_type().const_int(0b0111_1111, false);
|
||||||
|
let len_i8 = builder.build_and(final_byte, bitmask, "small_str_length");
|
||||||
|
|
||||||
builder.build_and(final_byte, bitmask, "small_str_length")
|
builder.build_int_cast(len_i8, env.ptr_int(), "len_as_usize")
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Used by LowLevel::StrIsEmpty
|
/// Used by LowLevel::StrIsEmpty
|
||||||
|
@ -257,11 +259,9 @@ where
|
||||||
let builder = env.builder;
|
let builder = env.builder;
|
||||||
|
|
||||||
let if_small = |final_byte| {
|
let if_small = |final_byte| {
|
||||||
let len = str_len_from_final_byte(env, final_byte);
|
|
||||||
|
|
||||||
cb(
|
cb(
|
||||||
cast_str_wrapper_to_array(env, wrapper_ptr),
|
cast_str_wrapper_to_array(env, wrapper_ptr),
|
||||||
builder.build_int_cast(len, env.ptr_int(), "len_as_usize"),
|
str_len_from_final_byte(env, final_byte),
|
||||||
Smallness::Small,
|
Smallness::Small,
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue