aboutsummaryrefslogtreecommitdiff
path: root/src/js_ast.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-09 23:33:34 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-09 23:33:34 -0700
commitfc907e2f81698d89502fb2ee0375e6d98a492c13 (patch)
treee775c2479b334ec901f61b5c0ccfab0102ff679e /src/js_ast.zig
parent8a02ad48a5eb1319c1bf3e9eb97e013924db875f (diff)
downloadbun-jarred/fetch-experiment.tar.gz
bun-jarred/fetch-experiment.tar.zst
bun-jarred/fetch-experiment.zip
Diffstat (limited to 'src/js_ast.zig')
-rw-r--r--src/js_ast.zig12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/js_ast.zig b/src/js_ast.zig
index 750100750..3b40a0127 100644
--- a/src/js_ast.zig
+++ b/src/js_ast.zig
@@ -1128,6 +1128,18 @@ pub const E = struct {
}
}
+ pub fn hash(s: *const String) u64 {
+ if (s.isBlank()) return 0;
+
+ if (s.isUTF8()) {
+ // hash utf-8
+ return std.hash.Wyhash.hash(0, s.utf8);
+ } else {
+ // hash utf-16
+ return std.hash.Wyhash.hash(0, @ptrCast([*]u8, s.value.ptr)[0 .. s.value.len * 2]);
+ }
+ }
+
pub fn jsonStringify(s: *const String, options: anytype, writer: anytype) !void {
var buf = [_]u8{0} ** 4096;
var i: usize = 0;