@@ -451,9 +451,9 @@ assign_table_init_value(AOTModuleInstance *module_inst, AOTModule *module,
451451#endif /* end of WASM_ENABLE_GC != 0 */
452452
453453static bool
454- get_init_expr_recursive (AOTModuleInstance * module_inst , AOTModule * module ,
455- InitializerExpression * expr , WASMValue * value ,
456- char * error_buf , uint32 error_buf_size )
454+ get_init_value_recursive (AOTModuleInstance * module_inst , AOTModule * module ,
455+ InitializerExpression * expr , WASMValue * value ,
456+ char * error_buf , uint32 error_buf_size )
457457{
458458 uint8 flag = expr -> init_expr_type ;
459459 switch (flag ) {
@@ -468,28 +468,22 @@ get_init_expr_recursive(AOTModuleInstance *module_inst, AOTModule *module,
468468 .global_data_linked ;
469469#else
470470 if (expr -> u .unary .v .global_index < module -> import_global_count ) {
471- bh_memcpy_s (
472- value , sizeof (WASMValue ),
473- & module -> import_globals [expr -> u .unary .v .global_index ]
474- .global_data_linked ,
475- sizeof (WASMValue ));
471+ * value = module -> import_globals [expr -> u .unary .v .global_index ]
472+ .global_data_linked ;
476473 }
477474 else {
478- bh_memcpy_s (value , sizeof (WASMValue ),
479- & module
480- -> globals [expr -> u .unary .v .global_index
481- - module -> import_global_count ]
482- .init_expr .u .unary .v ,
483- sizeof (WASMValue ));
475+ * value = module
476+ -> globals [expr -> u .unary .v .global_index
477+ - module -> import_global_count ]
478+ .init_expr .u .unary .v ;
484479 }
485480#endif
486481 break ;
487482 }
488483 case INIT_EXPR_TYPE_I32_CONST :
489484 case INIT_EXPR_TYPE_I64_CONST :
490485 {
491- bh_memcpy_s (value , sizeof (WASMValue ), & expr -> u .unary .v ,
492- sizeof (WASMValue ));
486+ * value = expr -> u .unary .v ;
493487 break ;
494488 }
495489#if WASM_ENABLE_EXTENDED_CONST_EXPR != 0
@@ -501,14 +495,14 @@ get_init_expr_recursive(AOTModuleInstance *module_inst, AOTModule *module,
501495 case INIT_EXPR_TYPE_I64_MUL :
502496 {
503497 WASMValue l_value , r_value ;
504- if (!get_init_expr_recursive (module_inst , module ,
505- expr -> u .binary .l_expr , & l_value ,
506- error_buf , error_buf_size )) {
498+ if (!get_init_value_recursive (module_inst , module ,
499+ expr -> u .binary .l_expr , & l_value ,
500+ error_buf , error_buf_size )) {
507501 return false;
508502 }
509- if (!get_init_expr_recursive (module_inst , module ,
510- expr -> u .binary .r_expr , & r_value ,
511- error_buf , error_buf_size )) {
503+ if (!get_init_value_recursive (module_inst , module ,
504+ expr -> u .binary .r_expr , & r_value ,
505+ error_buf , error_buf_size )) {
512506 return false;
513507 }
514508
@@ -580,9 +574,9 @@ global_instantiate(AOTModuleInstance *module_inst, AOTModule *module,
580574#endif
581575 {
582576 WASMValue value ;
583- if (!get_init_expr_recursive (module_inst , module , init_expr ,
584- & value , error_buf ,
585- error_buf_size )) {
577+ if (!get_init_value_recursive (module_inst , module , init_expr ,
578+ & value , error_buf ,
579+ error_buf_size )) {
586580 return false;
587581 }
588582 init_global_data (p , global -> type .val_type , & value );
@@ -845,26 +839,12 @@ tables_instantiate(AOTModuleInstance *module_inst, AOTModule *module,
845839 bh_assert (offset_flag == INIT_EXPR_TYPE_GET_GLOBAL
846840 || offset_flag == INIT_EXPR_TYPE_FUNCREF_CONST
847841 || offset_flag == INIT_EXPR_TYPE_REFNULL_CONST
848- || (tbl_inst -> is_table64
849- ? (offset_flag == INIT_EXPR_TYPE_I64_CONST
850- || offset_flag == INIT_EXPR_TYPE_I64_ADD
851- || offset_flag == INIT_EXPR_TYPE_I64_SUB
852- || offset_flag == INIT_EXPR_TYPE_I64_MUL )
853- : (offset_flag == INIT_EXPR_TYPE_I32_CONST
854- || offset_flag == INIT_EXPR_TYPE_I32_ADD
855- || offset_flag == INIT_EXPR_TYPE_I32_SUB
856- || offset_flag == INIT_EXPR_TYPE_I32_MUL )));
842+ || (tbl_inst -> is_table64 ? is_valid_i64_offset (offset_flag )
843+ : is_valid_i32_offset (offset_flag )));
857844#else
858845 bh_assert (offset_flag == INIT_EXPR_TYPE_GET_GLOBAL
859- || (tbl_inst -> is_table64
860- ? (offset_flag == INIT_EXPR_TYPE_I64_CONST
861- || offset_flag == INIT_EXPR_TYPE_I64_ADD
862- || offset_flag == INIT_EXPR_TYPE_I64_SUB
863- || offset_flag == INIT_EXPR_TYPE_I64_MUL )
864- : (offset_flag == INIT_EXPR_TYPE_I32_CONST
865- || offset_flag == INIT_EXPR_TYPE_I32_ADD
866- || offset_flag == INIT_EXPR_TYPE_I32_SUB
867- || offset_flag == INIT_EXPR_TYPE_I32_MUL )));
846+ || (tbl_inst -> is_table64 ? is_valid_i64_offset (offset_flag )
847+ : is_valid_i32_offset (offset_flag )));
868848#endif
869849
870850 /* Resolve table data base offset */
@@ -891,9 +871,9 @@ tables_instantiate(AOTModuleInstance *module_inst, AOTModule *module,
891871 }
892872 else {
893873 WASMValue offset_value ;
894- if (!get_init_expr_recursive (module_inst , module ,
895- & table_seg -> offset , & offset_value ,
896- error_buf , error_buf_size )) {
874+ if (!get_init_value_recursive (module_inst , module ,
875+ & table_seg -> offset , & offset_value ,
876+ error_buf , error_buf_size )) {
897877 return false;
898878 }
899879 base_offset = (uint32 )offset_value .i32 ;
@@ -1274,14 +1254,8 @@ memories_instantiate(AOTModuleInstance *module_inst, AOTModuleInstance *parent,
12741254 offset_flag = data_seg -> offset .init_expr_type ;
12751255 bh_assert (offset_flag == INIT_EXPR_TYPE_GET_GLOBAL
12761256 || (memory_inst -> is_memory64
1277- ? (offset_flag == INIT_EXPR_TYPE_I64_CONST
1278- || offset_flag == INIT_EXPR_TYPE_I64_ADD
1279- || offset_flag == INIT_EXPR_TYPE_I64_SUB
1280- || offset_flag == INIT_EXPR_TYPE_I64_MUL )
1281- : (offset_flag == INIT_EXPR_TYPE_I32_CONST
1282- || offset_flag == INIT_EXPR_TYPE_I32_ADD
1283- || offset_flag == INIT_EXPR_TYPE_I32_SUB
1284- || offset_flag == INIT_EXPR_TYPE_I32_MUL )));
1257+ ? is_valid_i64_offset (offset_flag )
1258+ : is_valid_i32_offset (offset_flag )));
12851259
12861260 /* Resolve memory data base offset */
12871261 if (offset_flag == INIT_EXPR_TYPE_GET_GLOBAL ) {
@@ -1314,9 +1288,9 @@ memories_instantiate(AOTModuleInstance *module_inst, AOTModuleInstance *parent,
13141288 }
13151289 else {
13161290 WASMValue offset_value ;
1317- if (!get_init_expr_recursive (module_inst , module , & data_seg -> offset ,
1318- & offset_value , error_buf ,
1319- error_buf_size )) {
1291+ if (!get_init_value_recursive (module_inst , module ,
1292+ & data_seg -> offset , & offset_value ,
1293+ error_buf , error_buf_size )) {
13201294 return false;
13211295 }
13221296#if WASM_ENABLE_MEMORY64 != 0
@@ -2238,7 +2212,7 @@ aot_instantiate(AOTModule *module, AOTModuleInstance *parent,
22382212 * (uint32 * )(module_inst -> global_data + data_offset );
22392213 }
22402214 else {
2241- if (!get_init_expr_recursive (
2215+ if (!get_init_value_recursive (
22422216 module_inst , module , & table_init_data -> offset ,
22432217 & offset_value , error_buf , error_buf_size )) {
22442218 goto fail ;
0 commit comments