diff --git a/src/bun.js/bindings/BunProcess.cpp b/src/bun.js/bindings/BunProcess.cpp index 05e34dcf06..aa19aa72d7 100644 --- a/src/bun.js/bindings/BunProcess.cpp +++ b/src/bun.js/bindings/BunProcess.cpp @@ -394,14 +394,14 @@ JSC_DEFINE_HOST_FUNCTION(Process_functionDlopen, return JSValue::encode(jsUndefined()); } - JSC::EncodedJSValue (*napi_register_module_v1)(napi_env env, JSC::EncodedJSValue exports); + napi_value (*napi_register_module_v1)(napi_env env, napi_value exports); #if OS(WINDOWS) #define dlsym GetProcAddress #endif // TODO(@190n) look for node_register_module_vXYZ according to BuildOptions.reported_nodejs_version // (bun/src/env.zig:36) and the table at https://github.com/nodejs/node/blob/main/doc/abi_version_registry.json - napi_register_module_v1 = reinterpret_cast( + napi_register_module_v1 = reinterpret_cast( dlsym(handle, "napi_register_module_v1")); if (!napi_register_module_v1) { @@ -442,7 +442,7 @@ JSC_DEFINE_HOST_FUNCTION(Process_functionDlopen, auto env = globalObject->makeNapiEnv(nmodule); EncodedJSValue exportsValue = JSC::JSValue::encode(exports); - JSC::JSValue resultValue = JSValue::decode(napi_register_module_v1(env, exportsValue)); + JSC::JSValue resultValue = JSValue::decode(reinterpret_cast(napi_register_module_v1(env, reinterpret_cast(exportsValue)))); RETURN_IF_EXCEPTION(scope, {}); diff --git a/src/bun.js/bindings/ZigGlobalObject.h b/src/bun.js/bindings/ZigGlobalObject.h index a255801ffd..56540e6af2 100644 --- a/src/bun.js/bindings/ZigGlobalObject.h +++ b/src/bun.js/bindings/ZigGlobalObject.h @@ -569,7 +569,7 @@ public: bool hasOverridenModuleResolveFilenameFunction = false; - WTF::Vector> m_napiEnvs; + WTF::Vector, 0> m_napiEnvs; napi_env makeNapiEnv(const napi_module&); napi_env makeNapiEnvForFFI(); diff --git a/src/bun.js/bindings/napi.cpp b/src/bun.js/bindings/napi.cpp index ef731064a0..c62f6ece8d 100644 --- a/src/bun.js/bindings/napi.cpp +++ b/src/bun.js/bindings/napi.cpp @@ -120,7 +120,7 @@ JSC::SourceCode generateSourceCode(WTF::String keyString, JSC::VM& vm, JSC::JSOb static inline Zig::GlobalObject* defaultGlobalObject(napi_env env) { if (env) { - return defaultGlobalObject(toJS(env)); + return defaultGlobalObject(env->globalObject()); } return defaultGlobalObject(); @@ -597,7 +597,7 @@ extern "C" napi_status napi_set_property(napi_env env, napi_value target, return napi_object_expected; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); auto* object = targetValue.toObject(globalObject); @@ -637,7 +637,7 @@ extern "C" napi_status napi_has_property(napi_env env, napi_value object, return napi_invalid_arg; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); auto* target = toJS(object).toObject(globalObject); @@ -691,7 +691,7 @@ extern "C" napi_status napi_get_property(napi_env env, napi_value object, return napi_object_expected; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); @@ -713,7 +713,7 @@ extern "C" napi_status napi_delete_property(napi_env env, napi_value object, { NAPI_PREMABLE - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); @@ -740,7 +740,7 @@ extern "C" napi_status napi_has_own_property(napi_env env, napi_value object, return napi_invalid_arg; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); @@ -761,7 +761,7 @@ extern "C" napi_status napi_set_named_property(napi_env env, napi_value object, { NAPI_PREMABLE - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); auto target = toJS(object).toObject(globalObject); @@ -793,7 +793,7 @@ extern "C" napi_status napi_create_arraybuffer(napi_env env, { NAPI_PREMABLE - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); if (UNLIKELY(!globalObject || !result)) { return napi_invalid_arg; } @@ -841,7 +841,7 @@ extern "C" napi_status napi_has_named_property(napi_env env, napi_value object, return napi_invalid_arg; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); @@ -867,7 +867,7 @@ extern "C" napi_status napi_get_named_property(napi_env env, napi_value object, return napi_invalid_arg; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_CATCH_SCOPE(vm); @@ -909,7 +909,7 @@ node_api_create_external_string_latin1(napi_env env, finalize_callback(env, nullptr, hint); } }); - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSString* out = JSC::jsString(globalObject->vm(), WTF::String(impl)); ensureStillAliveHere(out); @@ -947,7 +947,7 @@ node_api_create_external_string_utf16(napi_env env, finalize_callback(env, nullptr, hint); } }); - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSString* out = JSC::jsString(globalObject->vm(), WTF::String(impl)); ensureStillAliveHere(out); @@ -1149,7 +1149,7 @@ extern "C" napi_status napi_create_function(napi_env env, const char* utf8name, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto name = WTF::String(); @@ -1178,7 +1178,7 @@ extern "C" napi_status napi_get_cb_info( NAPI_PREMABLE JSC::CallFrame* callFrame = reinterpret_cast(cbinfo); - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); if (NAPICallFrame* frame = NAPICallFrame::get(callFrame).value_or(nullptr)) { NAPICallFrame::extract(*frame, argc, argv, this_arg, data, globalObject); @@ -1261,7 +1261,7 @@ napi_define_properties(napi_env env, napi_value object, size_t property_count, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); JSC::JSValue objectValue = toJS(object); @@ -1310,7 +1310,7 @@ static JSC::ErrorInstance* createErrorWithCode(JSC::JSGlobalObject* globalObject // used to implement napi_throw_*_error static napi_status throwErrorWithCStrings(napi_env env, const char* code_utf8, const char* msg_utf8, JSC::ErrorType type) { - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); auto& vm = globalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); @@ -1340,7 +1340,7 @@ static napi_status createErrorWithNapiValues(napi_env env, napi_value code, napi return napi_string_expected; } - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); auto wtf_code = js_code.isEmpty() ? WTF::String() : js_code.getString(globalObject); auto wtf_message = js_message.getString(globalObject); @@ -1375,7 +1375,7 @@ extern "C" napi_status napi_create_reference(napi_env env, napi_value value, return napi_object_expected; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); auto* ref = new NapiRef(env, initial_refcount); if (initial_refcount > 0) { @@ -1409,7 +1409,7 @@ extern "C" napi_status napi_add_finalizer(napi_env env, napi_value js_object, if (UNLIKELY(!env)) { return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); JSC::JSValue objectValue = toJS(js_object); @@ -1455,7 +1455,7 @@ extern "C" napi_status napi_get_reference_value(napi_env env, napi_ref ref, return napi_invalid_arg; } NapiRef* napiRef = toJS(ref); - *result = toNapi(napiRef->value(), toJS(env)); + *result = toNapi(napiRef->value(), env->globalObject()); return napi_ok; } @@ -1523,7 +1523,7 @@ extern "C" napi_status napi_detach_arraybuffer(napi_env env, napi_value arraybuffer) { NAPI_PREMABLE - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); JSC::JSArrayBuffer* jsArrayBuffer = JSC::jsDynamicCast(toJS(arraybuffer)); @@ -1553,9 +1553,9 @@ extern "C" napi_status napi_adjust_external_memory(napi_env env, } if (change_in_bytes > 0) { - toJS(env)->vm().heap.deprecatedReportExtraMemory(change_in_bytes); + env->globalObject()->vm().heap.deprecatedReportExtraMemory(change_in_bytes); } - *adjusted_value = toJS(env)->vm().heap.extraMemorySize(); + *adjusted_value = env->globalObject()->vm().heap.extraMemorySize(); return napi_ok; } @@ -1567,7 +1567,7 @@ extern "C" napi_status napi_is_exception_pending(napi_env env, bool* result) return napi_invalid_arg; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); *result = globalObject->vm().exceptionForInspection() != nullptr; return napi_ok; } @@ -1580,7 +1580,7 @@ extern "C" napi_status napi_get_and_clear_last_exception(napi_env env, return napi_invalid_arg; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto scope = DECLARE_CATCH_SCOPE(globalObject->vm()); if (scope.exception()) { *result = toNapi(JSC::JSValue(scope.exception()->value()), globalObject); @@ -1595,7 +1595,7 @@ extern "C" napi_status napi_fatal_exception(napi_env env, napi_value err) { NAPI_PREMABLE - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); JSC::JSValue value = toJS(err); JSC::JSObject* obj = value.getObject(); if (UNLIKELY(obj == nullptr || !obj->isErrorInstance())) { @@ -1610,7 +1610,7 @@ extern "C" napi_status napi_fatal_exception(napi_env env, extern "C" napi_status napi_throw(napi_env env, napi_value error) { NAPI_PREMABLE - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto throwScope = DECLARE_THROW_SCOPE(vm); @@ -1629,7 +1629,7 @@ extern "C" napi_status node_api_symbol_for(napi_env env, size_t length, napi_value* result) { NAPI_PREMABLE - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); if (UNLIKELY(!result || !utf8description)) { return napi_invalid_arg; @@ -1694,7 +1694,7 @@ extern "C" napi_status napi_object_freeze(napi_env env, napi_value object_value) return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto throwScope = DECLARE_THROW_SCOPE(vm); @@ -1713,7 +1713,7 @@ extern "C" napi_status napi_object_freeze(napi_env env, napi_value object_value) extern "C" napi_status napi_object_seal(napi_env env, napi_value object_value) { NAPI_PREMABLE - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto throwScope = DECLARE_THROW_SCOPE(vm); @@ -1739,7 +1739,7 @@ extern "C" napi_status napi_get_global(napi_env env, napi_value* result) return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); *result = toNapi(globalObject->globalThis(), globalObject); return napi_ok; } @@ -1767,12 +1767,12 @@ extern "C" napi_status napi_get_new_target(napi_env env, CallFrame* callFrame = reinterpret_cast(cbinfo); if (NAPICallFrame* frame = NAPICallFrame::get(callFrame).value_or(nullptr)) { - *result = toNapi(frame->newTarget, toJS(env)); + *result = toNapi(frame->newTarget, env->globalObject()); return napi_ok; } JSC::JSValue newTarget = callFrame->newTarget(); - *result = toNapi(newTarget, toJS(env)); + *result = toNapi(newTarget, env->globalObject()); return napi_ok; } @@ -1787,7 +1787,7 @@ extern "C" napi_status napi_create_dataview(napi_env env, size_t length, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto throwScope = DECLARE_THROW_SCOPE(vm); @@ -1866,7 +1866,7 @@ NapiClass* NapiClass::create(VM& vm, napi_env env, const char* utf8name, { WTF::String name = WTF::String::fromUTF8({ utf8name, length }).isolatedCopy(); NativeExecutable* executable = vm.getHostFunction(NapiClass_ConstructorFunction, ImplementationVisibility::Public, NapiClass_ConstructorFunction, name); - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); Structure* structure = globalObject->NapiClassStructure(); NapiClass* napiClass = new (NotNull, allocateCell(vm)) NapiClass(vm, executable, env, structure); napiClass->finishCreation(vm, executable, length, name, constructor, data, property_count, properties); @@ -1929,7 +1929,7 @@ extern "C" napi_status napi_get_all_property_names( jsc_property_mode = PropertyNameMode::Symbols; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); auto objectValue = toJS(objectNapi); auto* object = objectValue.getObject(); @@ -1954,7 +1954,7 @@ napi_get_last_error_info(napi_env env, const napi_extended_error_info** result) return napi_invalid_arg; } - auto globalObject = toJS(env); + auto globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto lastException = vm.lastException(); if (!lastException) { @@ -1998,7 +1998,7 @@ extern "C" napi_status napi_define_class(napi_env env, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); size_t len = length; if (len == NAPI_AUTO_LENGTH) { @@ -2023,7 +2023,7 @@ extern "C" napi_status napi_coerce_to_string(napi_env env, napi_value value, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto scope = DECLARE_THROW_SCOPE(vm); @@ -2052,7 +2052,7 @@ extern "C" napi_status napi_get_property_names(napi_env env, napi_value object, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); JSC::JSValue jsValue = toJS(object); @@ -2086,7 +2086,7 @@ extern "C" napi_status napi_create_external_buffer(napi_env env, size_t length, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); auto arrayBuffer = ArrayBuffer::createFromBytes({ reinterpret_cast(data), length }, createSharedTask([finalize_hint, finalize_cb, env](void* p) { #if NAPI_VERBOSE @@ -2113,7 +2113,7 @@ extern "C" napi_status napi_create_external_arraybuffer(napi_env env, void* exte return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto arrayBuffer = ArrayBuffer::createFromBytes({ reinterpret_cast(external_data), byte_length }, createSharedTask([finalize_hint, finalize_cb, env](void* p) { @@ -2140,7 +2140,7 @@ extern "C" napi_status napi_create_double(napi_env env, double value, return napi_invalid_arg; } - *result = toNapi(jsDoubleNumber(value), toJS(env)); + *result = toNapi(jsDoubleNumber(value), env->globalObject()); return napi_ok; } @@ -2149,7 +2149,7 @@ extern "C" napi_status napi_get_value_double(napi_env env, napi_value value, { NAPI_PREMABLE - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); JSC::JSValue jsValue = toJS(value); if (UNLIKELY(result == nullptr || !globalObject)) { @@ -2173,7 +2173,7 @@ extern "C" napi_status napi_get_value_int32(napi_env env, napi_value value, int3 { NAPI_PREMABLE - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); JSC::JSValue jsValue = toJS(value); if (UNLIKELY(result == nullptr || !globalObject)) { @@ -2197,7 +2197,7 @@ extern "C" napi_status napi_get_value_uint32(napi_env env, napi_value value, uin { NAPI_PREMABLE - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); JSC::JSValue jsValue = toJS(value); if (UNLIKELY(result == nullptr || !globalObject)) { @@ -2221,7 +2221,7 @@ extern "C" napi_status napi_get_value_int64(napi_env env, napi_value value, int6 { NAPI_PREMABLE - auto* globalObject = toJS(env); + auto* globalObject = env->globalObject(); JSC::JSValue jsValue = toJS(value); if (UNLIKELY(result == nullptr || !globalObject)) { @@ -2258,7 +2258,7 @@ extern "C" napi_status napi_get_value_string_utf8(napi_env env, { NAPI_PREMABLE - JSGlobalObject* globalObject = toJS(env); + JSGlobalObject* globalObject = env->globalObject(); JSValue jsValue = toJS(napiValue); if (!jsValue || !jsValue.isString()) { @@ -2332,10 +2332,10 @@ extern "C" napi_status napi_get_element(napi_env env, napi_value objectValue, JSObject* object = jsValue.getObject(); auto scope = DECLARE_THROW_SCOPE(object->vm()); - JSValue element = object->getIndex(toJS(env), index); + JSValue element = object->getIndex(env->globalObject(), index); RETURN_IF_EXCEPTION(scope, napi_generic_failure); - *result = toNapi(element, toJS(env)); + *result = toNapi(element, env->globalObject()); return napi_ok; } @@ -2354,7 +2354,7 @@ extern "C" napi_status napi_delete_element(napi_env env, napi_value objectValue, auto scope = DECLARE_THROW_SCOPE(object->vm()); if (LIKELY(result)) { - *result = JSObject::deletePropertyByIndex(object, toJS(env), index); + *result = JSObject::deletePropertyByIndex(object, env->globalObject(), index); } RETURN_IF_EXCEPTION(scope, napi_generic_failure); @@ -2369,7 +2369,7 @@ extern "C" napi_status napi_create_object(napi_env env, napi_value* result) return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); JSValue value = JSValue(NapiPrototype::create(vm, globalObject->NapiPrototypeStructure())); @@ -2389,7 +2389,7 @@ extern "C" napi_status napi_create_external(napi_env env, void* data, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto* structure = globalObject->NapiExternalStructure(); @@ -2569,7 +2569,7 @@ extern "C" napi_status napi_run_script(napi_env env, napi_value script, { NAPI_PREMABLE - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); if (UNLIKELY(result == nullptr)) { return napi_invalid_arg; } @@ -2631,7 +2631,7 @@ extern "C" napi_status napi_create_bigint_words(napi_env env, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto* bigint = JSC::JSBigInt::tryCreateWithLength(vm, word_count); if (UNLIKELY(!bigint)) { @@ -2659,7 +2659,7 @@ extern "C" napi_status napi_create_symbol(napi_env env, napi_value description, { NAPI_PREMABLE - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); if (UNLIKELY(result == nullptr || globalObject == nullptr)) { @@ -2698,7 +2698,7 @@ extern "C" napi_status napi_new_instance(napi_env env, napi_value constructor, return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); auto throwScope = DECLARE_THROW_SCOPE(vm); @@ -2731,7 +2731,7 @@ extern "C" napi_status napi_call_function(napi_env env, napi_value recv_napi, { NAPI_PREMABLE - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSC::VM& vm = globalObject->vm(); JSC::JSValue funcValue = toJS(func_napi); @@ -2777,7 +2777,7 @@ extern "C" napi_status napi_type_tag_object(napi_env env, napi_value value, cons if (!env || !value || !type_tag) { return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSObject* js_object = toJS(value).getObject(); if (!js_object) { return napi_object_expected; @@ -2801,7 +2801,7 @@ extern "C" napi_status napi_check_object_type_tag(napi_env env, napi_value value if (!env || !value || !type_tag) { return napi_invalid_arg; } - Zig::GlobalObject* globalObject = toJS(env); + Zig::GlobalObject* globalObject = env->globalObject(); JSObject* js_object = toJS(value).getObject(); if (!js_object) { return napi_object_expected; diff --git a/src/bun.js/bindings/napi.h b/src/bun.js/bindings/napi.h index 066b50e762..0bb11856de 100644 --- a/src/bun.js/bindings/napi.h +++ b/src/bun.js/bindings/napi.h @@ -70,11 +70,6 @@ static inline JSValue toJS(napi_value val) return JSC::JSValue::decode(reinterpret_cast(val)); } -static inline Zig::GlobalObject* toJS(napi_env val) -{ - return val->globalObject(); -} - static inline napi_value toNapi(JSC::JSValue val, Zig::GlobalObject* globalObject) { if (val.isCell()) { diff --git a/src/bun.js/bindings/napi_external.h b/src/bun.js/bindings/napi_external.h index f6a41674db..9ee3a292a3 100644 --- a/src/bun.js/bindings/napi_external.h +++ b/src/bun.js/bindings/napi_external.h @@ -46,6 +46,7 @@ public: JSC::TypeInfo(JSC::ObjectType, StructureFlags), info()); } + // env is needed only if a finalizer is passed, otherwise it may be null static NapiExternal* create(JSC::VM& vm, JSC::Structure* structure, void* value, void* finalizer_hint, napi_env env, void* finalizer) { NapiExternal* accessor = new (NotNull, JSC::allocateCell(vm)) NapiExternal(vm, structure);