From 1c1de31200e194989337156110ca0d161e792197 Mon Sep 17 00:00:00 2001 From: Dylan Conway Date: Thu, 1 Aug 2024 15:52:10 -0700 Subject: [PATCH] set eval mode --- src/bun.js/bindings/ZigGlobalObject.cpp | 11 ++++++++--- src/bun.js/bindings/bindings.zig | 5 +++-- src/bun_js.zig | 5 +++-- src/cli/test_command.zig | 2 +- src/js_ast.zig | 2 +- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 5ef9c2a26116b..05f8adec31711 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -188,7 +188,7 @@ static bool has_loaded_jsc = false; Structure* createMemoryFootprintStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject); extern "C" WebCore::Worker* WebWorker__getParentWorker(void*); -extern "C" void JSCInitialize(const char* envp[], size_t envc, void (*onCrash)(const char* ptr, size_t length)) +extern "C" void JSCInitialize(const char* envp[], size_t envc, void (*onCrash)(const char* ptr, size_t length), bool evalMode) { // NOLINTBEGIN if (has_loaded_jsc) @@ -218,6 +218,7 @@ extern "C" void JSCInitialize(const char* envp[], size_t envc, void (*onCrash)(c JSC::Options::useResizableArrayBuffer() = true; JSC::Options::usePromiseWithResolversMethod() = true; JSC::Options::useV8DateParser() = true; + JSC::Options::evalMode() = evalMode; #ifdef BUN_DEBUG JSC::Options::showPrivateScriptsInStackTraces() = true; @@ -987,7 +988,9 @@ const JSC::GlobalObjectMethodTable GlobalObject::s_globalObjectMethodTable = { nullptr, // defaultLanguage nullptr, // compileStreaming nullptr, // instantiateStreaming - &Zig::deriveShadowRealmGlobalObject + &Zig::deriveShadowRealmGlobalObject, + nullptr, // codeForEval + nullptr, // canCompileStrings }; const JSC::GlobalObjectMethodTable EvalGlobalObject::s_globalObjectMethodTable = { @@ -1010,7 +1013,9 @@ const JSC::GlobalObjectMethodTable EvalGlobalObject::s_globalObjectMethodTable = nullptr, // defaultLanguage nullptr, // compileStreaming nullptr, // instantiateStreaming - &Zig::deriveShadowRealmGlobalObject + &Zig::deriveShadowRealmGlobalObject, + nullptr, // codeForEval + nullptr, // canCompileStrings }; GlobalObject::GlobalObject(JSC::VM& vm, JSC::Structure* structure, const JSC::GlobalObjectMethodTable* methodTable) diff --git a/src/bun.js/bindings/bindings.zig b/src/bun.js/bindings/bindings.zig index 5bba774ed9adb..a4b67c6af3af4 100644 --- a/src/bun.js/bindings/bindings.zig +++ b/src/bun.js/bindings/bindings.zig @@ -6456,8 +6456,8 @@ pub const DOMCalls = &.{ Bun.FFIObject.Reader.DOMCalls, }; -extern "c" fn JSCInitialize(env: [*]const [*:0]u8, count: usize, cb: *const fn ([*]const u8, len: usize) callconv(.C) void) void; -pub fn initialize() void { +extern "c" fn JSCInitialize(env: [*]const [*:0]u8, count: usize, cb: *const fn ([*]const u8, len: usize) callconv(.C) void, eval_mode: bool) void; +pub fn initialize(eval_mode: bool) void { JSC.markBinding(@src()); bun.analytics.Features.jsc += 1; JSCInitialize( @@ -6483,6 +6483,7 @@ pub fn initialize() void { bun.Global.exit(1); } }.callback, + eval_mode, ); } diff --git a/src/bun_js.zig b/src/bun_js.zig index 66cc3399364d2..39c4df625b47e 100644 --- a/src/bun_js.zig +++ b/src/bun_js.zig @@ -44,7 +44,7 @@ pub const Run = struct { pub fn bootStandalone(ctx: Command.Context, entry_path: string, graph: bun.StandaloneModuleGraph) !void { JSC.markBinding(@src()); - bun.JSC.initialize(); + bun.JSC.initialize(false); const graph_ptr = try bun.default_allocator.create(bun.StandaloneModuleGraph); graph_ptr.* = graph; @@ -182,7 +182,8 @@ pub const Run = struct { return; } - bun.JSC.initialize(); + bun.JSC.initialize(ctx.runtime_options.eval.eval_and_print); + js_ast.Expr.Data.Store.create(); js_ast.Stmt.Data.Store.create(); var arena = try Arena.init(); diff --git a/src/cli/test_command.zig b/src/cli/test_command.zig index 858b357d5d58b..e0acfbd6584ae 100644 --- a/src/cli/test_command.zig +++ b/src/cli/test_command.zig @@ -740,7 +740,7 @@ pub const TestCommand = struct { loader.* = DotEnv.Loader.init(map, ctx.allocator); break :brk loader; }; - bun.JSC.initialize(); + bun.JSC.initialize(false); HTTPThread.init(); var snapshot_file_buf = std.ArrayList(u8).init(ctx.allocator); diff --git a/src/js_ast.zig b/src/js_ast.zig index f0f3f93ae96b2..eaeb928b0c69f 100644 --- a/src/js_ast.zig +++ b/src/js_ast.zig @@ -7741,7 +7741,7 @@ pub const Macro = struct { defer resolver.opts.transform_options = old_transform_options; // JSC needs to be initialized if building from CLI - JSC.initialize(); + JSC.initialize(false); var _vm = try JavaScript.VirtualMachine.init(.{ .allocator = default_allocator,