diff options
author | 2021-10-31 17:16:25 -0700 | |
---|---|---|
committer | 2021-10-31 17:16:25 -0700 | |
commit | 81de8147d77f8bba7dbfd72ce840e1239e4fe1e6 (patch) | |
tree | a5cd3d415471e24013deee4e0f0db52a14bb2432 /src/javascript/jsc/bindings | |
parent | 49ad70b11ca03739887e7b65835d3aab6bb652e7 (diff) | |
download | bun-jarred/redo-zigstring-for-utf16.tar.gz bun-jarred/redo-zigstring-for-utf16.tar.zst bun-jarred/redo-zigstring-for-utf16.zip |
[internal] Start to make `ZigString` support either UTF-16 or LATIN1 instead of assuming latin1jarred/redo-zigstring-for-utf16
Diffstat (limited to 'src/javascript/jsc/bindings')
-rw-r--r-- | src/javascript/jsc/bindings/ZigGlobalObject.cpp | 2 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/bindings.zig | 14 | ||||
-rw-r--r-- | src/javascript/jsc/bindings/exports.zig | 2 |
3 files changed, 12 insertions, 6 deletions
diff --git a/src/javascript/jsc/bindings/ZigGlobalObject.cpp b/src/javascript/jsc/bindings/ZigGlobalObject.cpp index b8470ce4b..7f637d812 100644 --- a/src/javascript/jsc/bindings/ZigGlobalObject.cpp +++ b/src/javascript/jsc/bindings/ZigGlobalObject.cpp @@ -101,10 +101,10 @@ extern "C" void JSCInitialize() { extern "C" JSC__JSGlobalObject *Zig__GlobalObject__create(JSClassRef *globalObjectClass, int count, void *console_client) { - auto heapSize = JSC::LargeHeap; JSC::VM &vm = JSC::VM::create(heapSize).leakRef(); vm.heap.acquireAccess(); + #if ENABLE(WEBASSEMBLY) JSC::Wasm::enableFastMemory(); #endif diff --git a/src/javascript/jsc/bindings/bindings.zig b/src/javascript/jsc/bindings/bindings.zig index 02f026ea5..eb5ecd1f1 100644 --- a/src/javascript/jsc/bindings/bindings.zig +++ b/src/javascript/jsc/bindings/bindings.zig @@ -81,9 +81,15 @@ pub const JSObject = extern struct { }; }; +pub const Encoding = enum(u8) { + latin1 = 0, + utf16 = 1, +}; + pub const ZigString = extern struct { - ptr: [*]const u8, - len: usize, + ptr: ?*const c_void, + len: u32, + encoding: Encoding, pub const shim = Shimmer("", "ZigString", @This()); pub const name = "ZigString"; @@ -97,7 +103,7 @@ pub const ZigString = extern struct { } pub fn init(slice_: []const u8) ZigString { - return ZigString{ .ptr = slice_.ptr, .len = slice_.len }; + return ZigString{ .ptr = slice_.ptr, .len = @truncate(u32, slice_.len), .encoding = Encoding.latin1 }; } pub inline fn toRef(slice_: []const u8, global: *JSGlobalObject) C_API.JSValueRef { @@ -115,7 +121,7 @@ pub const ZigString = extern struct { } pub fn trimmedSlice(this: *const ZigString) []const u8 { - return std.mem.trim(u8, this.ptr[0..std.math.min(this.len, 4096)], " \r\n"); + return std.mem.trim(u8, @as([*]const u8, this.ptr)[0..std.math.min(this.len, 4096)], " \r\n"); } pub fn toValue(this: ZigString, global: *JSGlobalObject) JSValue { diff --git a/src/javascript/jsc/bindings/exports.zig b/src/javascript/jsc/bindings/exports.zig index b325a1208..52ddaa96f 100644 --- a/src/javascript/jsc/bindings/exports.zig +++ b/src/javascript/jsc/bindings/exports.zig @@ -754,6 +754,7 @@ pub const ZigConsoleClient = struct { Boolean, const CellType = CAPI.CellType; threadlocal var name_buf: [512]u8 = undefined; + pub fn format(comptime Writer: type, writer: Writer, value: JSValue, globalThis: *JSGlobalObject, comptime enable_ansi_colors: bool) anyerror!void { if (comptime @hasDecl(@import("root"), "bindgen")) { return; @@ -816,7 +817,6 @@ pub const ZigConsoleClient = struct { value.getNameProperty(globalThis, &printable); try writer.print("[Function {s}]", .{printable.slice()}); } else { - var str = value.toWTFString(JS.VirtualMachine.vm.global); _ = try writer.write(str.slice()); } } |