diff options
author | 2023-04-27 08:37:37 -0700 | |
---|---|---|
committer | 2023-04-27 08:37:37 -0700 | |
commit | 52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c (patch) | |
tree | d051da306f53f942892848d7fe347afde1e9cef0 /src/string_immutable.zig | |
parent | 3ee22065f019d4f37dafb4e11607478fa9bcede5 (diff) | |
download | bun-52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c.tar.gz bun-52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c.tar.zst bun-52c50e37371ed0bf208de2b2e8dbf7c2cc1bd97c.zip |
address unicode issue (#2763)
* Fix an oopsie
* Another oopsie
* use inline for
* Fixup
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to '')
-rw-r--r-- | src/string_immutable.zig | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig index 2527b6898..f16759eaf 100644 --- a/src/string_immutable.zig +++ b/src/string_immutable.zig @@ -1105,29 +1105,20 @@ pub inline fn copyU16IntoU8(output_: []u8, comptime InputType: type, input_: Inp var output_ptr = output.ptr; if (comptime Environment.enableSIMD) { - const last_vector_ptr = input.ptr + (@min(input.len, output.len) & ~(group - 1)); + const end_len = (@min(input.len, output.len) & ~(group - 1)); + const last_vector_ptr = input.ptr + end_len; while (last_vector_ptr != input_ptr) { const input_vec1: @Vector(group, u16) = input_ptr[0..group].*; - output_ptr[0] = @truncate(u8, input_vec1[0]); - output_ptr[1] = @truncate(u8, input_vec1[1]); - output_ptr[2] = @truncate(u8, input_vec1[2]); - output_ptr[3] = @truncate(u8, input_vec1[3]); - output_ptr[4] = @truncate(u8, input_vec1[4]); - output_ptr[5] = @truncate(u8, input_vec1[5]); - output_ptr[6] = @truncate(u8, input_vec1[6]); - output_ptr[7] = @truncate(u8, input_vec1[7]); - output_ptr[8] = @truncate(u8, input_vec1[8]); - output_ptr[9] = @truncate(u8, input_vec1[9]); - output_ptr[10] = @truncate(u8, input_vec1[10]); - output_ptr[11] = @truncate(u8, input_vec1[11]); - output_ptr[12] = @truncate(u8, input_vec1[12]); - output_ptr[13] = @truncate(u8, input_vec1[13]); - output_ptr[14] = @truncate(u8, input_vec1[14]); - output_ptr[15] = @truncate(u8, input_vec1[15]); + inline for (0..group) |i| { + output_ptr[i] = @truncate(u8, input_vec1[i]); + } output_ptr += group; input_ptr += group; } + + input.len -= end_len; + output.len -= end_len; } const last_input_ptr = input_ptr + @min(input.len, output.len); |