aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-14 23:44:24 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-03-14 23:44:24 -0700
commit8f93cc37d2f5abdaba8bdfc28eefadab8f375caf (patch)
tree207f815a928a90af4430ccdc5c2a0db23b39d3aa
parent9a43eb903dbdd619e25faa9bdc9d79b4f32e055d (diff)
downloadbun-8f93cc37d2f5abdaba8bdfc28eefadab8f375caf.tar.gz
bun-8f93cc37d2f5abdaba8bdfc28eefadab8f375caf.tar.zst
bun-8f93cc37d2f5abdaba8bdfc28eefadab8f375caf.zip
handle min ascii 16
-rw-r--r--src/string_immutable.zig12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/string_immutable.zig b/src/string_immutable.zig
index 7e9895a42..f73a661b5 100644
--- a/src/string_immutable.zig
+++ b/src/string_immutable.zig
@@ -210,17 +210,13 @@ pub const StringOrTinyString = struct {
};
pub fn copyLowercase(in: string, out: []u8) string {
- @setRuntimeSafety(false);
var in_slice: string = in;
var out_slice: []u8 = out[0..in.len];
begin: while (out_slice.len > 0) {
- @setRuntimeSafety(false);
for (in_slice) |c, i| {
- @setRuntimeSafety(false);
switch (c) {
'A'...'Z' => {
- @setRuntimeSafety(false);
@memcpy(out_slice.ptr, in_slice.ptr, i);
out_slice[i] = std.ascii.toLower(c);
const end = i + 1;
@@ -876,7 +872,7 @@ pub fn toUTF16Alloc(allocator: std.mem.Allocator, bytes: []const u8, comptime fa
strings.copyU8IntoU16(output.items[output.items.len - remaining.len ..], remaining);
}
- return output.toOwnedSlice();
+ return output.items;
}
return null;
@@ -1698,7 +1694,7 @@ pub fn containsAnyBesidesChar(bytes: []const u8, char: u8) bool {
}
pub fn firstNonASCII16(comptime Slice: type, slice: Slice) ?u32 {
- return firstNonASCII16CheckMin(Slice, slice, false);
+ return firstNonASCII16CheckMin(Slice, slice, true);
}
/// Get the line number and the byte offsets of `line_range_count` above the desired line number
@@ -1767,7 +1763,9 @@ pub fn firstNonASCII16CheckMin(comptime Slice: type, slice: Slice, comptime chec
const vec: AsciiU16Vector = remaining[0..ascii_u16_vector_size].*;
if (comptime check_min) {
- const cmp = vec > max_u16_ascii or vec < min_16_ascii;
+ const cmp = @bitCast(AsciiVectorU16U1, vec > max_u16_ascii) |
+ @bitCast(AsciiVectorU16U1, vec < min_u16_ascii);
+
const bitmask = @ptrCast(*const u16, &cmp).*;
const first = @ctz(u16, bitmask);
if (first < ascii_u16_vector_size) {