aboutsummaryrefslogtreecommitdiff
path: root/src/js_ast.zig
diff options
context:
space:
mode:
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;