From b88dce707abcdd31d2edbe579b5a4a3de6fe9332 Mon Sep 17 00:00:00 2001 From: Aleksandr Emelenko Date: Wed, 31 May 2023 15:09:50 +0300 Subject: [PATCH] Added missed functionality for JS startGC intrinsic Signed-off-by: Aleksandr Emelenko --- runtime/builtins/builtins_global.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/runtime/builtins/builtins_global.cpp b/runtime/builtins/builtins_global.cpp index 920ffcc80..417c9626a 100644 --- a/runtime/builtins/builtins_global.cpp +++ b/runtime/builtins/builtins_global.cpp @@ -886,12 +886,12 @@ JSTaggedValue global::StartGC(EcmaRuntimeCallInfo *argv) GCTaskCause reason = GCCauseFromString(thread, builtins_common::GetCallArg(argv, 0)); JSHandle callback_fn = builtins_common::GetCallArg(argv, 1); - if (reason == GCTaskCause::INVALID_CAUSE) { + mem::GC *gc = thread->GetEcmaVM()->GetGC(); + if (!gc->CheckGCCause(reason)) { JSHandle err = - thread->GetEcmaVM()->GetFactory()->GetJSError(ErrorType::TYPE_ERROR, "Invalid GC cause"); + thread->GetEcmaVM()->GetFactory()->GetJSError(ErrorType::TYPE_ERROR, "Invalid GC cause for this GC type"); THROW_NEW_ERROR_AND_RETURN_VALUE(thread, err.GetTaggedValue(), JSTaggedValue::Exception()); } - mem::GC *gc = thread->GetEcmaVM()->GetGC(); G_GCTASK_TRACKER.InitIfNeeded(gc); auto task = MakePandaUnique(reason); if (!callback_fn->IsUndefined()) { -- Gitee