diff --git a/zh-cn/native_sdk/ark_runtime/jsvm/jsvm.h b/zh-cn/native_sdk/ark_runtime/jsvm/jsvm.h index 3081db568faf4bc18b34bc3f332365a5e39d58d4..c4c59d7f3a8012130912d9d00826e7051a3dffb8 100644 --- a/zh-cn/native_sdk/ark_runtime/jsvm/jsvm.h +++ b/zh-cn/native_sdk/ark_runtime/jsvm/jsvm.h @@ -208,6 +208,17 @@ JSVM_EXTERN JSVM_Status OH_JSVM_OpenEnvScope(JSVM_Env env, JSVM_EXTERN JSVM_Status OH_JSVM_CloseEnvScope(JSVM_Env env, JSVM_EnvScope scope); +/** + * @brief 将检索给定环境的虚拟机实例。 + * + * @param env 目标环境,JSVM-API接口将在该环境下调用。 + * @param result 给定环境的虚拟机实例。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_GetVM(JSVM_Env env, + JSVM_VM* result); + /** * @brief 编译一串JavaScript代码,并返回编译后的脚本。 * @@ -1885,7 +1896,7 @@ JSVM_EXTERN JSVM_Status OH_JSVM_CheckObjectTypeTag(JSVM_Env env, * 数据的原生回调。JSVM_Finalize提供了更多详细信息。 * @param finalizeHint 传递给finalize回调的可选上下文提示。 * @param result 可选的对JavaScript对象的引用。 - * @return 成功则返回JSVM_OK,失败可能返回JSVM_INVALID_ARG。 + * @return 成功则返回JSVM_OK,失败可能返回JSVM_INVALID_ARG。 * @since 11 */ JSVM_EXTERN JSVM_Status OH_JSVM_AddFinalizer(JSVM_Env env, @@ -1990,6 +2001,7 @@ JSVM_EXTERN JSVM_Status OH_JSVM_RejectDeferred(JSVM_Env env, /** * @brief 查询Promise是否为原生Promise对象。 + * * @param env 调用JSVM-API的环境。 * @param value 待检查的值。 * @param isPromise 表示是否为原生Promise对象(即底层引擎创建的promise对象)的标志。 @@ -2002,6 +2014,7 @@ JSVM_EXTERN JSVM_Status OH_JSVM_IsPromise(JSVM_Env env, /** * @brief 解析JSON字符串,并返回成功解析的值。 + * * @param env 调用JSVM-API的环境。 * @param jsonString 待解析的字符串。 * @param result 成功解析的值。 @@ -2014,6 +2027,7 @@ JSVM_EXTERN JSVM_Status OH_JSVM_JsonParse(JSVM_Env env, /** * @brief 将对象字符串化,并返回成功转换后的字符串。 + * * @param env 调用JSVM-API的环境。 * @param jsonObject 待字符串化的对象。 * @param result 成功转换后返回的字符串。 @@ -2026,6 +2040,7 @@ JSVM_EXTERN JSVM_Status OH_JSVM_JsonStringify(JSVM_Env env, /** * @brief 创建虚拟机的启动快照。 + * * @param vm 目标环境,API接口将在该环境下调用。 * @param contextCount 上下文个数。 * @param contexts 要添加到快照的上下文数组。 @@ -2040,6 +2055,90 @@ JSVM_EXTERN JSVM_Status OH_JSVM_CreateSnapshot(JSVM_VM vm, const char** blobData, size_t* blobSize); +/** + * @brief 返回一组虚拟机堆的统计数据。 + * + * @param vm 返回堆统计信息的虚拟机。 + * @param result 堆统计数据。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_GetHeapStatistics(JSVM_VM vm, + JSVM_HeapStatistics* result); + +/** + * @brief 创建并启动一个CPU分析器。 + * + * @param vm 启动CPU profiler的虚拟机。 + * @param result 指向CPU分析器的指针。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_StartCPUProfiler(JSVM_VM vm, + JSVM_CPUProfiler* result); + +/** + * @brief 停止CPU分析器并将结果输出到流。 + * + * @param vm 启动CPU profiler的虚拟机。 + * @param profiler 要停止的CPU分析器。 + * @param stream 接收数据的输出流回调。 + * @param streamData 可选的数据传递到流回调。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_StopCPUProfiler(JSVM_VM vm, + JSVM_CPUProfiler profiler, + JSVM_OutputStream stream, + void* streamData); + +/** + * @brief 获取当前堆快照并将其输出到流。 + * + * @param vm 已创建堆快照的虚拟机。 + * @param stream 接收数据的输出流回调。 + * @param streamData 可选的数据传递到流回调。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_TakeHeapSnapshot(JSVM_VM vm, + JSVM_OutputStream stream, + void* streamData); + +/** + * @brief 在主机和端口上激活检测器。 + * + * @param env 调用JSVM-API的环境。 + * @param host 要监听检查器连接的主机。 + * @param port 要监听检查器连接的端口。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_OpenInspector(JSVM_Env env, + const char* host, + uint16_t port); + +/** + * @brief 试图关闭所有剩余的检查器连接。 + * + * @param env 调用JSVM-API的环境。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_CloseInspector(JSVM_Env env); + +/** + * @brief 将阻塞,直到客户端(已存在或稍后连接) + * 发送Runtime.runIfWaitingForDebugger命令。 + * + * @param env 调用JSVM-API的环境。 + * @param breakNextLine 是否在下一行JavaScript代码中中断。 + * @return 成功则返回JSVM_OK。 + * @since 11 + */ +JSVM_EXTERN JSVM_Status OH_JSVM_WaitForDebugger(JSVM_Env env, + bool breakNextLine); + EXTERN_C_END /** @} */ diff --git a/zh-cn/native_sdk/ark_runtime/jsvm/jsvm_types.h b/zh-cn/native_sdk/ark_runtime/jsvm/jsvm_types.h index 2d56667a8cc0a949992b4f5da0809d83ce527871..a3fa49f2796dc05a84e685691e99af8f166a66ce 100644 --- a/zh-cn/native_sdk/ark_runtime/jsvm/jsvm_types.h +++ b/zh-cn/native_sdk/ark_runtime/jsvm/jsvm_types.h @@ -93,6 +93,13 @@ typedef struct JSVM_Script__* JSVM_Script; */ typedef struct JSVM_Env__* JSVM_Env; +/** + * @brief 表示一个JavaScript分析器。 + * + * @since 11 + */ +typedef struct JSVM_CPUProfiler__* JSVM_CPUProfiler; + /** * @brief 表示JavaScript值。 * @@ -170,6 +177,15 @@ typedef void(JSVM_CDECL* JSVM_Finalize)(JSVM_Env env, void* finalizeData, void* finalizeHint); +/** + * @brief ASCII输出流回调的函数指针类型。 + * + * @since 11 + */ +typedef bool(JSVM_CDECL* JSVM_OutputStream)(const char* data, + int size, + void* streamData); + /** * @brief 用于控制JavaScript对象属性的行为。 * @@ -364,6 +380,41 @@ typedef enum { JSVM_MEMORY_PRESSURE_LEVEL_CRITICAL, } JSVM_MemoryPressureLevel; +/** + * @brief Heapstatisics对象。用于获取有关JavaScript + * 堆内存使用情况的统计信息。 + * + * @since 11 + */ +typedef struct { + /** 堆的总大小。 */ + size_t totalHeapSize; + /** 堆的总可执行大小。 */ + size_t totalHeapSizeExecutable; + /** 堆的总物理大小。 */ + size_t totalPhysicalSize; + /** 堆的总可用大小。 */ + size_t totalAvailableSize; + /** 已使用的堆大小。 */ + size_t usedHeapSize; + /** 堆大小限制。 */ + size_t heapSizeLimit; + /** 堆请求的内存。 */ + size_t mallocedMemory; + /** 堆请求的外部内存。 */ + size_t externalMemory; + /** 堆请求的峰值内存。 */ + size_t peakMallocedMemory; + /** 本机上下文的数量。 */ + size_t numberOfNativeContexts; + /** 分离上下文的数量。 */ + size_t numberOfDetachedContexts; + /** 总全局句柄的大小。 */ + size_t totalGlobalHandlesSize; + /** 使用的全局句柄的大小。 */ + size_t usedGlobalHandlesSize; +} JSVM_HeapStatistics; + /** * @brief 初始化选项,用于初始化JavaScript虚拟机。 *