From b0ee27b0b79fc7c8a30b2a188d81916368b99b09 Mon Sep 17 00:00:00 2001 From: QiangShaowei Date: Sat, 21 Jun 2025 17:27:27 +0800 Subject: [PATCH] App warm startup support SmartGC Signed-off-by: QiangShaowei --- interfaces/inner_api/napi/native_node_api.h | 1 + native_engine/impl/ark/ark_idle_monitor.cpp | 8 ++++++-- native_engine/impl/ark/ark_native_engine.cpp | 3 +++ native_engine/impl/ark/ark_native_engine.h | 1 + 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/interfaces/inner_api/napi/native_node_api.h b/interfaces/inner_api/napi/native_node_api.h index bea26bcb4..ddea4adee 100644 --- a/interfaces/inner_api/napi/native_node_api.h +++ b/interfaces/inner_api/napi/native_node_api.h @@ -62,6 +62,7 @@ typedef enum { NAPI_APP_STATE_SENSITIVE_START = 2, NAPI_APP_STATE_SENSITIVE_END = 3, NAPI_APP_STATE_COLD_START_FINISHED = 4, + NAPI_APP_STATE_WARM_START = 5, } NapiAppState; using NapiAppStateCallback = void (*)(int state, int64_t timestamp); diff --git a/native_engine/impl/ark/ark_idle_monitor.cpp b/native_engine/impl/ark/ark_idle_monitor.cpp index 0a01eb549..319e814d8 100644 --- a/native_engine/impl/ark/ark_idle_monitor.cpp +++ b/native_engine/impl/ark/ark_idle_monitor.cpp @@ -274,8 +274,12 @@ void ArkIdleMonitor::NotifyMainThreadTryCompressGCByBackground() void ArkIdleMonitor::SetStartTimerCallback() { JSNApi::SetStartIdleMonitorCallback([this]() { - this->IntervalMonitor(); - started_ = true; + // prevents duplicate invok to avoid deadlocks + if (!started_) { + HILOG_INFO("Running idle monitor call back task"); + this->IntervalMonitor(); + started_ = true; + } }); } diff --git a/native_engine/impl/ark/ark_native_engine.cpp b/native_engine/impl/ark/ark_native_engine.cpp index d2998813b..5bb70bdfb 100644 --- a/native_engine/impl/ark/ark_native_engine.cpp +++ b/native_engine/impl/ark/ark_native_engine.cpp @@ -2525,6 +2525,9 @@ void ArkNativeEngine::NotifyForceExpandState(int32_t value) DFXJSNApi::NotifyHighSensitive(vm_, false); interopAppState_.Notify(NAPI_APP_STATE_SENSITIVE_END); break; + case ForceExpandState::WARM_START: + DFXJSNApi::NotifyWarmStart(vm_); + interopAppState_.Notify(NAPI_APP_STATE_WARM_START); default: HILOG_ERROR("Invalid Force Expand State: %{public}d.", value); break; diff --git a/native_engine/impl/ark/ark_native_engine.h b/native_engine/impl/ark/ark_native_engine.h index f67b4b787..ff53b4ca7 100644 --- a/native_engine/impl/ark/ark_native_engine.h +++ b/native_engine/impl/ark/ark_native_engine.h @@ -99,6 +99,7 @@ enum class ForceExpandState : int32_t { FINISH_COLD_START = 0, START_HIGH_SENSITIVE, FINISH_HIGH_SENSITIVE, + WARM_START, }; enum class ModuleTypes : uint8_t { -- Gitee