From d407e9a0d16fcfcde04eba29141f2a72857bfc26 Mon Sep 17 00:00:00 2001 From: Ammar Ahmed Date: Mon, 9 Nov 2026 11:14:11 +0500 Subject: [PATCH] perf(android): create wrappers on the class prototype without a JSObject construction --- NativeScript/ffi/jni/jsi/metadata/MetadataNode.cpp | 5 ++--- NativeScript/ffi/jni/napi/metadata/MetadataNode.cpp | 5 +++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NativeScript/ffi/jni/jsi/metadata/MetadataNode.cpp b/NativeScript/ffi/jni/jsi/metadata/MetadataNode.cpp index b3841591..04c6b50a 100644 --- a/NativeScript/ffi/jni/jsi/metadata/MetadataNode.cpp +++ b/NativeScript/ffi/jni/jsi/metadata/MetadataNode.cpp @@ -174,10 +174,9 @@ JsValue MetadataNode::CreateJSWrapper(JsRuntime &rt, ObjectManager *objectManage return CreateArrayWrapper(rt); } - JsValue obj = objectManager->GetEmptyObject(); + JsObject plain(rt); + JsValue obj(rt, plain); JsValue ctorFunc = GetConstructorFunction(rt); - auto object = obj.asObjectBorrowed(rt); - object.setProperty(rt, "constructor", ctorFunc); js_util::setPrototypeOf(rt, obj, js_util::get_prototype(rt, ctorFunc)); SetInstanceMetadata(rt, obj, this); diff --git a/NativeScript/ffi/jni/napi/metadata/MetadataNode.cpp b/NativeScript/ffi/jni/napi/metadata/MetadataNode.cpp index 298ae7aa..d1d56ffb 100644 --- a/NativeScript/ffi/jni/napi/metadata/MetadataNode.cpp +++ b/NativeScript/ffi/jni/napi/metadata/MetadataNode.cpp @@ -149,9 +149,10 @@ napi_value MetadataNode::CreateJSWrapper(napi_env env, ObjectManager *objectMana if (m_isArray) { obj = CreateArrayWrapper(env); } else { - obj = objectManager->GetEmptyObject(); + NAPI_GUARD(napi_create_object(env, &obj)) { + return nullptr; + } napi_value ctorFunc = GetConstructorFunction(env); - NAPI_GUARD(napi_set_named_property(env, obj, CONSTRUCTOR, ctorFunc)) {} napi_util::setPrototypeOf(env, obj, napi_util::get_prototype(env, ctorFunc)); SetInstanceMetadata(env, obj, this); }