aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/bindings/ZigGlobalObject.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-26 20:04:26 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-26 20:04:26 -0700
commit002d46d0c415137fb4985fa4c2ce47f1a38a8f93 (patch)
tree8e18f42e6fd220f11a9660eb42830a82afab3510 /src/javascript/jsc/bindings/ZigGlobalObject.cpp
parent018ba2c83bf3c2e925ec3273c5f936cb4aff434f (diff)
downloadbun-002d46d0c415137fb4985fa4c2ce47f1a38a8f93.tar.gz
bun-002d46d0c415137fb4985fa4c2ce47f1a38a8f93.tar.zst
bun-002d46d0c415137fb4985fa4c2ce47f1a38a8f93.zip
Add `JSArrayIterator`, don't call JSC::Options after JSC already loaded once (that causes a crash)
Diffstat (limited to 'src/javascript/jsc/bindings/ZigGlobalObject.cpp')
-rw-r--r--src/javascript/jsc/bindings/ZigGlobalObject.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/javascript/jsc/bindings/ZigGlobalObject.cpp b/src/javascript/jsc/bindings/ZigGlobalObject.cpp
index b7ebe53d2..712d1cc63 100644
--- a/src/javascript/jsc/bindings/ZigGlobalObject.cpp
+++ b/src/javascript/jsc/bindings/ZigGlobalObject.cpp
@@ -80,17 +80,21 @@ using JSObject = JSC::JSObject;
using JSNonFinalObject = JSC::JSNonFinalObject;
namespace JSCastingHelpers = JSC::JSCastingHelpers;
+bool has_loaded_jsc = false;
+
extern "C" JSC__JSGlobalObject *Zig__GlobalObject__create(JSClassRef *globalObjectClass, int count,
void *console_client) {
- JSC::Options::useSourceProviderCache() = true;
- JSC::Options::useUnlinkedCodeBlockJettisoning() = false;
- // JSC::Options::useTopLevelAwait() = true;
- JSC::Options::exposeInternalModuleLoader() = true;
-
- std::set_terminate([]() { Zig__GlobalObject__onCrash(); });
- WTF::initializeMainThread();
- JSC::initialize();
+ if (!has_loaded_jsc) {
+ JSC::Options::useSourceProviderCache() = true;
+ JSC::Options::useUnlinkedCodeBlockJettisoning() = false;
+ // JSC::Options::useTopLevelAwait() = true;
+ JSC::Options::exposeInternalModuleLoader() = true;
+ std::set_terminate([]() { Zig__GlobalObject__onCrash(); });
+ WTF::initializeMainThread();
+ JSC::initialize();
+ has_loaded_jsc = true;
+ }
// JSC::Options::useCodeCache() = false;
@@ -104,7 +108,7 @@ extern "C" JSC__JSGlobalObject *Zig__GlobalObject__create(JSClassRef *globalObje
JSC::JSLockHolder locker(vm);
Zig::GlobalObject *globalObject =
- Zig::GlobalObject::create(vm, Zig::GlobalObject::createStructure(vm, JSC::jsNull()));
+ Zig::GlobalObject::create(vm, Zig::GlobalObject::createStructure(vm, JSC::jsNull()));
globalObject->setConsole(globalObject);
if (count > 0) { globalObject->installAPIGlobals(globalObjectClass, count); }