Optimize for multi-module support in AOT mode (#3563)
- Split the `aot_loader_resolve_function` into two functions to prevent redundant module lookups and loads - Access pre-associated module instances from `import_func_module_insts`, avoiding unnecessary instance lookups and improving performance
This commit is contained in:
@ -7325,6 +7325,32 @@ wasm_runtime_sub_module_instantiate(WASMModuleCommon *module,
|
||||
(WASMModuleInstance *)sub_module_inst;
|
||||
sub_module_inst_list_node->module_name =
|
||||
sub_module_list_node->module_name;
|
||||
|
||||
#if WASM_ENABLE_AOT != 0
|
||||
if (module_inst->module_type == Wasm_Module_AoT) {
|
||||
AOTModuleInstance *aot_module_inst =
|
||||
(AOTModuleInstance *)module_inst;
|
||||
AOTModule *aot_module = (AOTModule *)module;
|
||||
AOTModuleInstanceExtra *aot_extra =
|
||||
(AOTModuleInstanceExtra *)aot_module_inst->e;
|
||||
uint32 i;
|
||||
AOTImportFunc *import_func;
|
||||
for (i = 0; i < aot_module->import_func_count; i++) {
|
||||
if (aot_extra->import_func_module_insts[i])
|
||||
continue;
|
||||
|
||||
import_func = &aot_module->import_funcs[i];
|
||||
if (strcmp(sub_module_inst_list_node->module_name,
|
||||
import_func->module_name)
|
||||
== 0) {
|
||||
aot_extra->import_func_module_insts[i] =
|
||||
(WASMModuleInstanceCommon *)
|
||||
sub_module_inst_list_node->module_inst;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bh_list_status ret =
|
||||
bh_list_insert(sub_module_inst_list, sub_module_inst_list_node);
|
||||
bh_assert(BH_LIST_SUCCESS == ret);
|
||||
|
||||
Reference in New Issue
Block a user