diff options
author | 2022-03-18 20:04:33 -0700 | |
---|---|---|
committer | 2022-03-18 20:04:33 -0700 | |
commit | 1be9e3cf2d4f451167cf614af811bc046583f530 (patch) | |
tree | 34865b810b7ffd530e7281e5f07b79184d3d36d4 /src | |
parent | 6b82b67065eb7fe4250055a0456daa1d31c6e25b (diff) | |
download | bun-1be9e3cf2d4f451167cf614af811bc046583f530.tar.gz bun-1be9e3cf2d4f451167cf614af811bc046583f530.tar.zst bun-1be9e3cf2d4f451167cf614af811bc046583f530.zip |
handle ShadowRealm
Diffstat (limited to 'src')
-rw-r--r-- | src/javascript/jsc/javascript.zig | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig index 709201a68..eed427c57 100644 --- a/src/javascript/jsc/javascript.zig +++ b/src/javascript/jsc/javascript.zig @@ -662,20 +662,26 @@ pub const VirtualMachine = struct { pub fn getAPIConstructors(globalObject: *JSGlobalObject) []const JSC.JSValue { if (is_bindgen) return &[_]JSC.JSValue{}; - if (!VirtualMachine.vm.has_loaded_constructors) { + const is_first = !VirtualMachine.vm.has_loaded_constructors; + if (is_first) { VirtualMachine.vm.global = globalObject; VirtualMachine.vm.has_loaded_constructors = true; } + var slice = if (is_first) + @as([]JSC.JSValue, &JSC.VirtualMachine.vm.global_api_constructors) + else + VirtualMachine.vm.allocator.alloc(JSC.JSValue, GlobalConstructors.len) catch unreachable; + inline for (GlobalConstructors) |Class, i| { var ref = Class.constructor(globalObject.ref()).?; JSC.C.JSValueProtect(globalObject.ref(), ref); - JSC.VirtualMachine.vm.global_api_constructors[i] = JSC.JSValue.fromRef( + slice[i] = JSC.JSValue.fromRef( ref, ); } - return &JSC.VirtualMachine.vm.global_api_constructors; + return slice; } pub fn init( |