Add apis to get package version (#3601)
Add three APIs: - wasm_runtime_get_file_package_version - wasm_runtime_get_module_package_version - wasm_runtime_get_current_package_version
This commit is contained in:
@ -858,11 +858,11 @@ wasm_runtime_set_default_running_mode(RunningMode running_mode)
|
||||
PackageType
|
||||
get_package_type(const uint8 *buf, uint32 size)
|
||||
{
|
||||
#if (WASM_ENABLE_WORD_ALIGN_READ != 0)
|
||||
uint32 buf32 = *(uint32 *)buf;
|
||||
buf = (const uint8 *)&buf32;
|
||||
#endif
|
||||
if (buf && size >= 4) {
|
||||
#if (WASM_ENABLE_WORD_ALIGN_READ != 0)
|
||||
uint32 buf32 = *(uint32 *)buf;
|
||||
buf = (const uint8 *)&buf32;
|
||||
#endif
|
||||
if (buf[0] == '\0' && buf[1] == 'a' && buf[2] == 's' && buf[3] == 'm')
|
||||
return Wasm_Module_Bytecode;
|
||||
if (buf[0] == '\0' && buf[1] == 'a' && buf[2] == 'o' && buf[3] == 't')
|
||||
@ -887,6 +887,62 @@ wasm_runtime_get_module_package_type(WASMModuleCommon *module)
|
||||
return module->module_type;
|
||||
}
|
||||
|
||||
uint32
|
||||
wasm_runtime_get_file_package_version(const uint8 *buf, uint32 size)
|
||||
{
|
||||
if (buf && size >= 8) {
|
||||
uint32 version;
|
||||
#if (WASM_ENABLE_WORD_ALIGN_READ != 0)
|
||||
uint32 buf32 = *(uint32 *)(buf + sizeof(uint32));
|
||||
buf = (const uint8 *)&buf32;
|
||||
version = buf[0] | buf[1] << 8 | buf[2] << 16 | buf[3] << 24;
|
||||
#else
|
||||
version = buf[4] | buf[5] << 8 | buf[6] << 16 | buf[7] << 24;
|
||||
#endif
|
||||
return version;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32
|
||||
wasm_runtime_get_module_package_version(WASMModuleCommon *module)
|
||||
{
|
||||
if (!module) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_INTERP != 0
|
||||
if (module->module_type == Wasm_Module_Bytecode) {
|
||||
WASMModule *wasm_module = (WASMModule *)module;
|
||||
return wasm_module->package_version;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if WASM_ENABLE_AOT != 0
|
||||
if (module->module_type == Wasm_Module_AoT) {
|
||||
AOTModule *aot_module = (AOTModule *)module;
|
||||
return aot_module->package_version;
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32
|
||||
wasm_runtime_get_current_package_version(package_type_t package_type)
|
||||
{
|
||||
switch (package_type) {
|
||||
case Wasm_Module_Bytecode:
|
||||
return WASM_CURRENT_VERSION;
|
||||
case Wasm_Module_AoT:
|
||||
return AOT_CURRENT_VERSION;
|
||||
case Package_Type_Unknown:
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_AOT != 0
|
||||
static uint8 *
|
||||
align_ptr(const uint8 *p, uint32 b)
|
||||
|
||||
Reference in New Issue
Block a user