jsvm_types.h

概述

提供JSVM-API类型定义。

通过API接口为开发者提供独立、标准、完整的JavaScript引擎能力, 包括管理引擎生命周期、编译运行JS代码、实现JS/C++跨语言调用、拍摄快照等。

库: libjsvm.so

系统能力: SystemCapability.ArkCompiler.JSVM

起始版本: 11

相关模块:JSVM

汇总

结构体

名称 描述
struct  JSVM_CallbackStruct 用户提供的native函数的回调函数指针和数据,这些函数通过JSVM-API接口暴露给JavaScript。
struct  JSVM_InitOptions 初始化选项,用于初始化JavaScript虚拟机。
struct  JSVM_CreateVMOptions 创建JavaScript虚拟机的选项。
struct  JSVM_VMInfo JavaScript虚拟机信息。
struct  JSVM_PropertyDescriptor 属性描述符。
struct  JSVM_ExtendedErrorInfo 扩展的异常信息。
struct  JSVM_TypeTag 类型标记,存储为两个无符号64位整数的128位值。 作为一个UUID,通过它,JavaScript对象可以是"tagged", 以确保它们的类型保持不变。

类型定义

名称 描述
typedef uint16_t char16_t
typedef struct JSVM_VM__ * JSVM_VM 表示JavaScript虚拟机实例。
typedef struct JSVM_VMScope__ * JSVM_VMScope 表示JavaScript虚拟机作用域。
typedef struct JSVM_EnvScope__ * JSVM_EnvScope 表示用于控制附加到当前虚拟机实例的环境。只有当线程通过 OH_JSVM_OpenEnvScope进入该环境的JSVM_EnvScope后,该环境才 对线程的虚拟机实例可用。
typedef struct JSVM_Script__ * JSVM_Script 表示一段JavaScript代码。
typedef struct JSVM_Env__ * JSVM_Env 表示虚拟机特定状态的上下文环境,需要在调用native函数时作为参数传递, 并且传递给后续任何的JSVM-API嵌套调用。
typedef struct JSVM_Value__ * JSVM_Value 表示JavaScript值。
typedef struct JSVM_Ref__ * JSVM_Ref 表示JavaScript值的引用。
typedef struct JSVM_HandleScope__ * JSVM_HandleScope 表示JavaScript值的作用域,用于控制和修改在特定范围内创建的对象的生命周期。 通常,JSVM-API值是在JSVM_HandleScope的上下文中创建的。当从JavaScript调用native方法时, 将存在默认JSVM_HandleScope。如果用户没有显式创建新的JSVM_HandleScope,将在默认 JSVM_HandleScope中创建JSVM-API值。对于native方法执行之外的任何代码调用(例如,在libuv回调调用期间), 模块需要在调用任何可能导致创建JavaScript值的函数之前创建一个作用域。JSVM_HandleScope是使用 OH_JSVM_OpenHandleScope创建的,并使用OH_JSVM_CloseHandleScope销毁的。 关闭作用域代表向GC指示在JSVM_HandleScope作用域的生命周期内创建的所有JSVM_Value将不再从当前堆的栈帧中引用。
typedef struct JSVM_EscapableHandleScope__ * JSVM_EscapableHandleScope 表示一种特殊类型的handle scope,用于将在特定handle scope内创建的值返回到父作用域。
typedef struct JSVM_CallbackInfo__ * JSVM_CallbackInfo 表示传递给回调函数的不透明数据类型。可用于获取调用该函数的上下文的附加信息。
typedef struct JSVM_Deferred__ * JSVM_Deferred 表示Promise延迟对象。
typedef JSVM_CallbackStruct * JSVM_Callback 用户提供的native函数的函数指针类型,这些函数通过JSVM-API接口暴露给JavaScript。
typedef void(JSVM_CDECL * JSVM_Finalize) (JSVM_Env env, void *finalizeData, void *finalizeHint) 函数指针类型,当native类型对象或数据与JS对象被关联时,传入该指针。该函数将会 在关联的JS对象被GC回收时被调用,用以执行native的清理动作。

枚举

名称 描述
JSVM_PropertyAttributes {
JSVM_DEFAULT = 0, JSVM_WRITABLE = 1 << 0, JSVM_ENUMERABLE = 1 << 1, JSVM_CONFIGURABLE = 1 << 2,
JSVM_STATIC = 1 << 10, JSVM_DEFAULT_METHOD = JSVM_WRITABLE | JSVM_CONFIGURABLE, JSVM_DEFAULT_JSPROPERTY = JSVM_WRITABLE | JSVM_ENUMERABLE | JSVM_CONFIGURABLE
}
用于控制JavaScript对象属性的行为。
JSVM_ValueType {
JSVM_UNDEFINED, JSVM_NULL, JSVM_BOOLEAN, JSVM_NUMBER,
JSVM_STRING, JSVM_SYMBOL, JSVM_OBJECT, JSVM_FUNCTION,
JSVM_EXTERNAL, JSVM_BIGINT
}
描述JSVM_Value的类型。
JSVM_TypedarrayType {
JSVM_INT8_ARRAY, JSVM_UINT8_ARRAY, JSVM_UINT8_CLAMPED_ARRAY, JSVM_INT16_ARRAY,
JSVM_UINT16_ARRAY, JSVM_INT32_ARRAY, JSVM_UINT32_ARRAY, JSVM_FLOAT32_ARRAY,
JSVM_FLOAT64_ARRAY, JSVM_BIGINT64_ARRAY, JSVM_BIGUINT64_ARRAY
}
描述TypedArray的类型。
JSVM_Status {
JSVM_OK, JSVM_INVALID_ARG, JSVM_OBJECT_EXPECTED, JSVM_STRING_EXPECTED,
JSVM_NAME_EXPECTED, JSVM_FUNCTION_EXPECTED, JSVM_NUMBER_EXPECTED, JSVM_BOOLEAN_EXPECTED,
JSVM_ARRAY_EXPECTED, JSVM_GENERIC_FAILURE, JSVM_PENDING_EXCEPTION, JSVM_CANCELLED,
JSVM_ESCAPE_CALLED_TWICE, JSVM_HANDLE_SCOPE_MISMATCH, JSVM_CALLBACK_SCOPE_MISMATCH, JSVM_QUEUE_FULL,
JSVM_CLOSING, JSVM_BIGINT_EXPECTED, JSVM_DATE_EXPECTED, JSVM_ARRAYBUFFER_EXPECTED,
JSVM_DETACHABLE_ARRAYBUFFER_EXPECTED, JSVM_WOULD_DEADLOCK, JSVM_NO_EXTERNAL_BUFFERS_ALLOWED, JSVM_CANNOT_RUN_JS
}
表示JSVM-API调用成功或失败的完整状态码。
JSVM_KeyCollectionMode { JSVM_KEY_INCLUDE_PROTOTYPES, JSVM_KEY_OWN_ONLY } 限制查找属性的范围。
JSVM_KeyFilter {
JSVM_KEY_ALL_PROPERTIES = 0, JSVM_KEY_WRITABLE = 1, JSVM_KEY_ENUMERABLE = 1 << 1, JSVM_KEY_CONFIGURABLE = 1 << 2,
JSVM_KEY_SKIP_STRINGS = 1 << 3, JSVM_KEY_SKIP_SYMBOLS = 1 << 4
}
属性过滤器,可以通过使用or来构造一个复合过滤器。
JSVM_KeyConversion { JSVM_KEY_KEEP_NUMBERS, JSVM_KEY_NUMBERS_TO_STRINGS } 键转换选项。
JSVM_MemoryPressureLevel { JSVM_MEMORY_PRESSURE_LEVEL_NONE, JSVM_MEMORY_PRESSURE_LEVEL_MODERATE, JSVM_MEMORY_PRESSURE_LEVEL_CRITICAL } 内存压力水平。