From d8f5764f5d1593851df3a9bbe72384b9ff9f6dcd Mon Sep 17 00:00:00 2001 From: zhangsizheng Date: Mon, 9 Jun 2025 19:41:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E4=BF=AE=E5=A4=8Dscopeinfo?= =?UTF-8?q?=E5=BC=95=E8=B5=B7=E7=9A=84=E6=80=A7=E8=83=BD=E5=8A=A3=E5=8C=96?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangsizheng --- src/js_native_api_v8.cpp | 14 ++++++++++---- src/js_native_api_v8.h | 16 ++++++---------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/js_native_api_v8.cpp b/src/js_native_api_v8.cpp index 3b9ca08..70c5422 100644 --- a/src/js_native_api_v8.cpp +++ b/src/js_native_api_v8.cpp @@ -53,6 +53,16 @@ FORCE_NOINLINE void AddValueToScopeCheck( } } +FORCE_NOINLINE void CheckScope(JSVM_Env env, JSVM_Value val, const char *callerFunctionName) +{ + if (UNLIKELY((env)->debugFlags & (1 << JSVM_SCOPE_CHECK)) && (val)) { + LOG(Info) << "CHECK_SCOPE in function: " << callerFunctionName; + if (!(env)->GetScopeTracker()->CheckJSVMVal(val)) { + JSVM_FATAL("Run in wrong HandleScope"); + } + } +} + namespace v8impl { namespace { @@ -4542,7 +4552,6 @@ JSVM_Status OH_JSVM_IsUndefined(JSVM_Env env, JSVM_Value value, bool* isUndefine CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, isUndefined); - CHECK_SCOPE(env, value); v8::Local val = v8impl::V8LocalValueFromJsValue(value); *isUndefined = val->IsUndefined(); @@ -4557,7 +4566,6 @@ JSVM_Status OH_JSVM_IsNull(JSVM_Env env, JSVM_Value value, bool* isNull) CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, isNull); - CHECK_SCOPE(env, value); v8::Local val = v8impl::V8LocalValueFromJsValue(value); *isNull = val->IsNull(); @@ -4572,7 +4580,6 @@ JSVM_Status OH_JSVM_IsNullOrUndefined(JSVM_Env env, JSVM_Value value, bool* isNu CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, isNullOrUndefined); - CHECK_SCOPE(env, value); v8::Local val = v8impl::V8LocalValueFromJsValue(value); *isNullOrUndefined = val->IsNullOrUndefined(); @@ -4617,7 +4624,6 @@ JSVM_Status OH_JSVM_IsString(JSVM_Env env, JSVM_Value value, bool* isString) CHECK_ENV(env); CHECK_ARG(env, value); CHECK_ARG(env, isString); - CHECK_SCOPE(env, value); v8::Local val = v8impl::V8LocalValueFromJsValue(value); *isString = val->IsString(); diff --git a/src/js_native_api_v8.h b/src/js_native_api_v8.h index b2e8052..2931084 100644 --- a/src/js_native_api_v8.h +++ b/src/js_native_api_v8.h @@ -192,6 +192,7 @@ inline JSVM_Status SetLastError(JSVM_Env env, FORCE_NOINLINE void AddValueToScopeCheck(JSVM_Env env, JSVM_Value val); FORCE_NOINLINE void AddValueToEscapeScopeCheck(JSVM_Env env, JSVM_Value val); +FORCE_NOINLINE void CheckScope(JSVM_Env env, JSVM_Value val, const char *callerFunctionName); #define ADD_VAL_TO_SCOPE_CHECK(env, val) \ do { \ @@ -207,16 +208,11 @@ FORCE_NOINLINE void AddValueToEscapeScopeCheck(JSVM_Env env, JSVM_Value val); } \ } while (0) -#define CHECK_SCOPE(env, val) \ - do { \ - if (UNLIKELY((env)->debugFlags)) { \ - if (UNLIKELY((env)->debugFlags & (1 << JSVM_SCOPE_CHECK)) && (val)) { \ - LOG(Info) << "CHECK_SCOPE in function: " << __func__; \ - if (!(env)->GetScopeTracker()->CheckJSVMVal(val)) { \ - JSVM_FATAL("Run in wrong HandleScope"); \ - } \ - } \ - } \ +#define CHECK_SCOPE(env, val) \ + do { \ + if (UNLIKELY((env)->debugFlags)) { \ + CheckScope(env, val, __func__); \ + } \ } while (0) #define STATUS_CALL(call) \ -- Gitee