Implement feedback

This commit is contained in:
Kai Tamkun
2024-12-06 18:56:30 -08:00
parent f99d1bce54
commit 890fb04a09
5 changed files with 65 additions and 69 deletions

View File

@@ -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<JSC::EncodedJSValue (*)(napi_env, JSC::EncodedJSValue)>(
napi_register_module_v1 = reinterpret_cast<napi_value (*)(napi_env, napi_value)>(
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<EncodedJSValue>(napi_register_module_v1(env, reinterpret_cast<napi_value>(exportsValue))));
RETURN_IF_EXCEPTION(scope, {});

View File

@@ -569,7 +569,7 @@ public:
bool hasOverridenModuleResolveFilenameFunction = false;
WTF::Vector<std::unique_ptr<napi_env__>> m_napiEnvs;
WTF::Vector<std::unique_ptr<napi_env__>, 0> m_napiEnvs;
napi_env makeNapiEnv(const napi_module&);
napi_env makeNapiEnvForFFI();

View File

@@ -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<JSC::CallFrame*>(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<JSC::JSArrayBuffer*>(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<JSC::CallFrame*>(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<NapiClass>(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<const uint8_t*>(data), length }, createSharedTask<void(void*)>([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<const uint8_t*>(external_data), byte_length }, createSharedTask<void(void*)>([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;

View File

@@ -70,11 +70,6 @@ static inline JSValue toJS(napi_value val)
return JSC::JSValue::decode(reinterpret_cast<JSC::EncodedJSValue>(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()) {

View File

@@ -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<NapiExternal>(vm)) NapiExternal(vm, structure);