node-api: create reference only when needed

Optimize napi_create_external() to create the reference for calling
finalizer only if user actually provides a finalizer callback.

PR-URL: https://github.com/nodejs/node/pull/44827
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
Gerhard Stöbich authored and GitHub committed 2022-10-03 16:26:07 +00:00
1 parent f4815fcd76
commit ecd5de08b7
1 file changed
+6 -4
+6 -4
View File
@@ -2387,10 +2387,12 @@ napi_status NAPI_CDECL napi_create_external(napi_env env,
v8::Local<v8::Value> external_value = v8::External::New(isolate, data);
// The Reference object will delete itself after invoking the finalizer
// callback.
v8impl::Reference::New(
env, external_value, 0, true, finalize_cb, data, finalize_hint);
if (finalize_cb) {
// The Reference object will delete itself after invoking the finalizer
// callback.
v8impl::Reference::New(
env, external_value, 0, true, finalize_cb, data, finalize_hint);
}
*result = v8impl::JsValueFromV8LocalValue(external_value);