diff --git a/build_jsvm_inter.sh b/build_jsvm_inter.sh index 40e4140505b631f2d198e7728f538e025d934782..905460ebb7331525fbdfbd329df7f8852d94617a 100755 --- a/build_jsvm_inter.sh +++ b/build_jsvm_inter.sh @@ -130,7 +130,7 @@ do_env() { # alway rebuild mkdir -p ${workdir} - argurment+=" -I${PREFIX}/../include/c++/v1 -D__MUSL__ -D_LIBCPP_HAS_MUSL_LIBC -DOHOS_JS_ENGINE" + argurment+=" -D__MUSL__ -D_LIBCPP_HAS_MUSL_LIBC -DOHOS_JS_ENGINE" argurment+=" -fstack-protector-strong" argurment+=" -Wl,-z,noexecstack" argurment+=" -Wl,-z,relro" @@ -163,6 +163,7 @@ do_env() { cflags_host="-m64" ARCH="aarch64" elif [[ "${TARGET_CPU}" = "x86_64" ]]; then + argurment+=" -I${PREFIX}/../include/c++/v1" cflags="--target=x86_64-linux-ohos" cflags+=" --sysroot=${SYSROOT}" cflags+=" -isystem ${SYSROOT}/usr/include/x86_64-linux-ohos" diff --git a/jsvm.gni b/jsvm.gni index fcec519a0792fb1f8d8afdd83cd37867ed99c629..cadfab692148131065f75dc5abf8d1ea89531aac 100644 --- a/jsvm.gni +++ b/jsvm.gni @@ -31,5 +31,5 @@ declare_args() { enable_debug = false enable_inspector = true use_platform_ohos = true - support_hwasan = false + support_hwasan = true } diff --git a/src/js_native_api_v8.cpp b/src/js_native_api_v8.cpp index 436ba47eed9336082a6fe2d02a30624e18db6e67..bdda5f36119fe7dd3a901949dd3ed6e1f69a8b1d 100644 --- a/src/js_native_api_v8.cpp +++ b/src/js_native_api_v8.cpp @@ -5561,13 +5561,14 @@ JSVM_Status OH_JSVM_RemoveHandlerForGC(JSVM_VM vm, if (it == handlers.end()) { return JSVM_INVALID_ARG; } + v8impl::GCHandlerWrapper wraper = *it; handlers.erase(it); if (triggerTime == JSVM_CB_TRIGGER_BEFORE_GC) { - isolate->RemoveGCPrologueCallback(OnBeforeGC, (*it)); + isolate->RemoveGCPrologueCallback(OnBeforeGC, wraper); } else { - isolate->RemoveGCEpilogueCallback(OnAfterGC, (*it)); + isolate->RemoveGCEpilogueCallback(OnAfterGC, wraper); } - delete (*it); + delete wraper; return JSVM_OK; } @@ -5710,6 +5711,8 @@ JSVM_EXTERN JSVM_Status OH_JSVM_TraceStart(size_t count, v8::Platform* platform = v8impl::g_platform.get(); TracingController* controller = static_cast(platform->GetTracingController()); + controller->Initialize(nullptr); + v8impl::g_trace_stream.reset(new std::stringstream()); auto stream = v8impl::g_trace_stream.get(); diff --git a/test/unittest/test_jsvm.cpp b/test/unittest/test_jsvm.cpp index 8a2e66516bbb3741e6710b26dd91a534fd6eeba4..54cab73f84f83dc3446fe803f85868e54fe4c1a0 100644 --- a/test/unittest/test_jsvm.cpp +++ b/test/unittest/test_jsvm.cpp @@ -629,6 +629,9 @@ HWTEST_F(JSVMTest, JSVMTraceStop003, TestSize.Level1) ASSERT_EQ(status, JSVM_OK); status = OH_JSVM_TraceStop(OutputStream, nullptr); ASSERT_EQ(status, JSVM_INVALID_ARG); + std::string data; + JSVM_Status status = OH_JSVM_TraceStop(OutputStream, (void*)&data); + ASSERT_EQ(status, JSVM_INVALID_ARG); } HWTEST_F(JSVMTest, JSVMTraceStop004, TestSize.Level1) @@ -638,6 +641,8 @@ HWTEST_F(JSVMTest, JSVMTraceStop004, TestSize.Level1) std::string data; status = OH_JSVM_TraceStop(nullptr, (void*)&data); ASSERT_EQ(status, JSVM_INVALID_ARG); + JSVM_Status status = OH_JSVM_TraceStop(OutputStream, (void*)&data); + ASSERT_EQ(status, JSVM_INVALID_ARG); } HWTEST_F(JSVMTest, JSVMIsNumberObject001, TestSize.Level1)