aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-10-31 17:16:25 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-10-31 17:16:25 -0700
commit81de8147d77f8bba7dbfd72ce840e1239e4fe1e6 (patch)
treea5cd3d415471e24013deee4e0f0db52a14bb2432 /src/javascript/jsc/bindings
parent49ad70b11ca03739887e7b65835d3aab6bb652e7 (diff)
downloadbun-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.cpp2
-rw-r--r--src/javascript/jsc/bindings/bindings.zig14
-rw-r--r--src/javascript/jsc/bindings/exports.zig2
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());
}
}