From 53cbaabe8a0e5dca75e046ead86239cbb1af2cec Mon Sep 17 00:00:00 2001 From: weibaoxiang Date: Mon, 1 Sep 2025 19:51:35 +0800 Subject: [PATCH] interop refactor for js convert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue: https://gitee.com/openharmony/arkcompiler_runtime_core/issues/ICVUE4 Signed-off-by: 韦宝相 Change-Id: Id65be9b2bfe6016d5fa959547608ff9f1e681aa0 --- .../cross_vm/dynamic_object_accessor_util.cpp | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ecmascript/cross_vm/dynamic_object_accessor_util.cpp b/ecmascript/cross_vm/dynamic_object_accessor_util.cpp index 0d8e2cf8a3..4a9e6c03de 100644 --- a/ecmascript/cross_vm/dynamic_object_accessor_util.cpp +++ b/ecmascript/cross_vm/dynamic_object_accessor_util.cpp @@ -13,6 +13,7 @@ * limitations under the License. */ +#include "common_interfaces/objects/base_class.h" #include "common_interfaces/objects/dynamic_object_accessor_util.h" #include "ecmascript/checkpoint/thread_state_transition.h" #include "ecmascript/debugger/js_debugger_manager.h" @@ -22,6 +23,8 @@ #include "ecmascript/interpreter/interpreter.h" #include "ecmascript/interpreter/interpreter_assembly.h" #include "ecmascript/js_function.h" +#include "ecmascript/js_hclass.h" +#include "ecmascript/js_object.h" #include "ecmascript/js_tagged_value.h" #include "ecmascript/js_tagged_value-inl.h" #include "ecmascript/js_thread.h" @@ -31,7 +34,6 @@ #include "ecmascript/object_factory.h" #include "ecmascript/object_operator.h" - namespace common { using panda::ecmascript::EcmaHandleScope; @@ -39,6 +41,8 @@ using panda::ecmascript::EcmaVM; using panda::ecmascript::EcmaRuntimeCallInfo; using panda::ecmascript::JSFunction; using panda::ecmascript::JSHandle; +using panda::ecmascript::JSHClass; +using panda::ecmascript::JSObject; using panda::ecmascript::JSTaggedValue; using panda::ecmascript::JSThread; using panda::ecmascript::ObjectFactory; @@ -48,6 +52,20 @@ using panda::EscapeLocalScope; using panda::JSValueRef; using panda::JSNApi; +bool DynamicObjectAccessorUtil::IsInstanceOf(const BaseObject *checkObj, const BaseObject *targetObj) +{ + JSThread *jsThread = JSThread::GetCurrent(); + panda::ecmascript::ThreadManagedScope managedScope(jsThread); + panda::EscapeLocalScope scope(jsThread->GetEcmaVM()); + JSHandle checkObjHandle(jsThread, TaggedObject::Cast(checkObj)); + JSHandle targetObjHandle(jsThread, TaggedObject::Cast(targetObj)); + return JSObject::InstanceOf(jsThread, checkObjHandle, targetObjHandle); +} + +ObjectType DynamicObjectAccessorUtil::GetObjectType(const BaseObject *obj) +{ + return static_cast(TaggedObject::Cast(obj)->GetClass()->GetObjectType()); +} TaggedType* DynamicObjectAccessorUtil::GetProperty(const BaseObject *obj, const char *name) { -- Gitee