@@ -53,7 +53,7 @@ bh_static_assert(offsetof(AOTModuleInstance, c_api_func_imports)
5353bh_static_assert (offsetof(AOTModuleInstance , global_table_data )
5454 == 13 * sizeof (uint64 ) + 128 + 14 * sizeof (uint64 ));
5555
56- bh_static_assert (sizeof (AOTMemoryInstance ) == 152 );
56+ // bh_static_assert(sizeof(AOTMemoryInstance) == 152);
5757bh_static_assert (offsetof(AOTTableInstance , elems ) == 24 );
5858
5959bh_static_assert (offsetof(AOTModuleInstanceExtra , stack_sizes ) == 0 );
@@ -4271,107 +4271,107 @@ aot_copy_callstack(WASMExecEnv *exec_env, wasm_frame_t *buffer,
42714271bool
42724272aot_create_call_stack (struct WASMExecEnv * exec_env )
42734273{
4274- AOTModuleInstance * module_inst = (AOTModuleInstance * )exec_env -> module_inst ;
4275- AOTModule * module = (AOTModule * )module_inst -> module ;
4276- uint32 n = 0 ;
4277-
4278- void * top_frame = get_top_frame (exec_env );
4279- while (top_frame ) {
4280- top_frame = get_prev_frame (exec_env , top_frame );
4281- n ++ ;
4282- }
4283-
4284- /* release previous stack frames and create new ones */
4285- destroy_c_api_frames (module_inst -> frames );
4286- if (!bh_vector_init (module_inst -> frames , n , sizeof (WASMCApiFrame ), false)) {
4287- return false;
4288- }
4289-
4290- top_frame = get_top_frame (exec_env );
4291- while (n -- > 0 ) {
4292- uint32 func_index , ip_offset ;
4293- uint32 * lp = NULL ;
4294- #if WASM_ENABLE_GC != 0
4295- uint32 * sp = NULL ;
4296- uint8 * frame_ref = NULL ;
4297- #endif
4298- if (is_tiny_frame (exec_env )) {
4299- AOTTinyFrame * frame = (AOTTinyFrame * )top_frame ;
4300- func_index = (uint32 )frame -> func_index ;
4301- ip_offset = (uint32 )frame -> ip_offset ;
4302- }
4303- else {
4304- AOTFrame * frame = (AOTFrame * )top_frame ;
4305- func_index = (uint32 )frame -> func_index ;
4306- ip_offset = (uint32 )frame -> ip_offset ;
4307- lp = frame -> lp ;
4308- #if WASM_ENABLE_GC != 0
4309- sp = frame -> sp ;
4310- frame_ref = frame -> frame_ref ;
4311- #endif
4312- }
4313- WASMCApiFrame frame = { 0 };
4314- uint32 max_local_cell_num = 0 , max_stack_cell_num = 0 ;
4315- uint32 all_cell_num , lp_size ;
4316-
4317- frame .instance = module_inst ;
4318- frame .module_offset = 0 ;
4319- frame .func_index = func_index ;
4320- frame .func_offset = ip_offset ;
4321- frame .func_name_wp = get_func_name_from_index (module_inst , func_index );
4322-
4323- if (!is_frame_func_idx_disabled (exec_env )) {
4324- if (func_index >= module -> import_func_count ) {
4325- uint32 aot_func_idx = func_index - module -> import_func_count ;
4326- max_local_cell_num = module -> max_local_cell_nums [aot_func_idx ];
4327- max_stack_cell_num = module -> max_stack_cell_nums [aot_func_idx ];
4328- }
4329- else {
4330- AOTFuncType * func_type =
4331- module -> import_funcs [func_index ].func_type ;
4332- max_local_cell_num = func_type -> param_cell_num > 2
4333- ? func_type -> param_cell_num
4334- : 2 ;
4335- max_stack_cell_num = 0 ;
4336- }
4337- }
4338-
4339- all_cell_num = max_local_cell_num + max_stack_cell_num ;
4340- #if WASM_ENABLE_GC == 0
4341- lp_size = all_cell_num * 4 ;
4342- #else
4343- lp_size = align_uint (all_cell_num * 5 , 4 );
4344- #endif
4345- if (lp_size > 0 && !is_tiny_frame (exec_env )) {
4346- if (!(frame .lp = wasm_runtime_malloc (lp_size ))) {
4347- destroy_c_api_frames (module_inst -> frames );
4348- return false;
4349- }
4350- bh_memcpy_s (frame .lp , lp_size , lp , lp_size );
4351-
4352- #if WASM_ENABLE_GC != 0
4353- uint32 local_ref_flags_cell_num =
4354- module -> func_local_ref_flags [frame .func_index ]
4355- .local_ref_flag_cell_num ;
4356- uint8 * local_ref_flags =
4357- module -> func_local_ref_flags [frame .func_index ].local_ref_flags ;
4358- frame .sp = frame .lp + (sp - lp );
4359- frame .frame_ref = (uint8 * )frame .lp + (frame_ref - (uint8 * )lp );
4360- /* copy local ref flags from AOT module */
4361- bh_memcpy_s (frame .frame_ref , local_ref_flags_cell_num ,
4362- local_ref_flags , lp_size );
4363- #endif
4364- }
4365-
4366- if (!bh_vector_append (module_inst -> frames , & frame )) {
4367- if (frame .lp )
4368- wasm_runtime_free (frame .lp );
4369- destroy_c_api_frames (module_inst -> frames );
4370- return false;
4371- }
4372-
4373- top_frame = get_prev_frame (exec_env , top_frame );
4374- }
4274+ // AOTModuleInstance *module_inst = (AOTModuleInstance *)exec_env->module_inst;
4275+ // AOTModule *module = (AOTModule *)module_inst->module;
4276+ // uint32 n = 0;
4277+ //
4278+ // void *top_frame = get_top_frame(exec_env);
4279+ // while (top_frame) {
4280+ // top_frame = get_prev_frame(exec_env, top_frame);
4281+ // n++;
4282+ // }
4283+ //
4284+ // /* release previous stack frames and create new ones */
4285+ // destroy_c_api_frames(module_inst->frames);
4286+ // if (!bh_vector_init(module_inst->frames, n, sizeof(WASMCApiFrame), false)) {
4287+ // return false;
4288+ // }
4289+ //
4290+ // top_frame = get_top_frame(exec_env);
4291+ // while (n-- > 0) {
4292+ // uint32 func_index, ip_offset;
4293+ // uint32 *lp = NULL;
4294+ // #if WASM_ENABLE_GC != 0
4295+ // uint32 *sp = NULL;
4296+ // uint8 *frame_ref = NULL;
4297+ // #endif
4298+ // if (is_tiny_frame(exec_env)) {
4299+ // AOTTinyFrame *frame = (AOTTinyFrame *)top_frame;
4300+ // func_index = (uint32)frame->func_index;
4301+ // ip_offset = (uint32)frame->ip_offset;
4302+ // }
4303+ // else {
4304+ // AOTFrame *frame = (AOTFrame *)top_frame;
4305+ // func_index = (uint32)frame->func_index;
4306+ // ip_offset = (uint32)frame->ip_offset;
4307+ // lp = frame->lp;
4308+ // #if WASM_ENABLE_GC != 0
4309+ // sp = frame->sp;
4310+ // frame_ref = frame->frame_ref;
4311+ // #endif
4312+ // }
4313+ // WASMCApiFrame frame = { 0 };
4314+ // uint32 max_local_cell_num = 0, max_stack_cell_num = 0;
4315+ // uint32 all_cell_num, lp_size;
4316+ //
4317+ // frame.instance = module_inst;
4318+ // frame.module_offset = 0;
4319+ // frame.func_index = func_index;
4320+ // frame.func_offset = ip_offset;
4321+ // frame.func_name_wp = get_func_name_from_index(module_inst, func_index);
4322+ //
4323+ // if (!is_frame_func_idx_disabled(exec_env)) {
4324+ // if (func_index >= module->import_func_count) {
4325+ // uint32 aot_func_idx = func_index - module->import_func_count;
4326+ // max_local_cell_num = module->max_local_cell_nums[aot_func_idx];
4327+ // max_stack_cell_num = module->max_stack_cell_nums[aot_func_idx];
4328+ // }
4329+ // else {
4330+ // AOTFuncType *func_type =
4331+ // module->import_funcs[func_index].func_type;
4332+ // max_local_cell_num = func_type->param_cell_num > 2
4333+ // ? func_type->param_cell_num
4334+ // : 2;
4335+ // max_stack_cell_num = 0;
4336+ // }
4337+ // }
4338+ //
4339+ // all_cell_num = max_local_cell_num + max_stack_cell_num;
4340+ // #if WASM_ENABLE_GC == 0
4341+ // lp_size = all_cell_num * 4;
4342+ // #else
4343+ // lp_size = align_uint(all_cell_num * 5, 4);
4344+ // #endif
4345+ // if (lp_size > 0 && !is_tiny_frame(exec_env)) {
4346+ // if (!(frame.lp = wasm_runtime_malloc(lp_size))) {
4347+ // destroy_c_api_frames(module_inst->frames);
4348+ // return false;
4349+ // }
4350+ // bh_memcpy_s(frame.lp, lp_size, lp, lp_size);
4351+ //
4352+ // #if WASM_ENABLE_GC != 0
4353+ // uint32 local_ref_flags_cell_num =
4354+ // module->func_local_ref_flags[frame.func_index]
4355+ // .local_ref_flag_cell_num;
4356+ // uint8 *local_ref_flags =
4357+ // module->func_local_ref_flags[frame.func_index].local_ref_flags;
4358+ // frame.sp = frame.lp + (sp - lp);
4359+ // frame.frame_ref = (uint8 *)frame.lp + (frame_ref - (uint8 *)lp);
4360+ // /* copy local ref flags from AOT module */
4361+ // bh_memcpy_s(frame.frame_ref, local_ref_flags_cell_num,
4362+ // local_ref_flags, lp_size);
4363+ // #endif
4364+ // }
4365+ //
4366+ // if (!bh_vector_append(module_inst->frames, &frame)) {
4367+ // if (frame.lp)
4368+ // wasm_runtime_free(frame.lp);
4369+ // destroy_c_api_frames(module_inst->frames);
4370+ // return false;
4371+ // }
4372+ //
4373+ // top_frame = get_prev_frame(exec_env, top_frame);
4374+ // }
43754375
43764376 return true;
43774377}
0 commit comments