@@ -1013,6 +1013,22 @@ copy_stack_values(WASMModuleInstance *module, uint32 *frame_lp, uint32 arity,
1013
1013
SET_FRAME_REF ((unsigned )(dst_offsets [0 ] + 1 )); \
1014
1014
} \
1015
1015
} \
1016
+ else if (cells [0 ] == 4 ) { \
1017
+ PUT_V128_TO_ADDR ( \
1018
+ frame_lp + dst_offsets [0 ], \
1019
+ GET_V128_FROM_ADDR (frame_lp + src_offsets [0 ])); \
1020
+ /* Ignore constants because they are not reference */ \
1021
+ if (src_offsets [0 ] >= 0 ) { \
1022
+ CLEAR_FRAME_REF ((unsigned )src_offsets [0 ]); \
1023
+ CLEAR_FRAME_REF ((unsigned )(src_offsets [0 ] + 1 )); \
1024
+ CLEAR_FRAME_REF ((unsigned )(src_offsets [0 ] + 2 )); \
1025
+ CLEAR_FRAME_REF ((unsigned )(src_offsets [0 ] + 3 )); \
1026
+ SET_FRAME_REF ((unsigned )dst_offsets [0 ]); \
1027
+ SET_FRAME_REF ((unsigned )(dst_offsets [0 ] + 1 )); \
1028
+ SET_FRAME_REF ((unsigned )(dst_offsets [0 ] + 2 )); \
1029
+ SET_FRAME_REF ((unsigned )(dst_offsets [0 ] + 3 )); \
1030
+ } \
1031
+ } \
1016
1032
} \
1017
1033
else { \
1018
1034
if (!copy_stack_values (module , frame_lp , arity , frame_ref , \
@@ -1053,6 +1069,11 @@ copy_stack_values(WASMModuleInstance *module, uint32 *frame_lp, uint32 arity,
1053
1069
frame_lp + dst_offsets [0 ], \
1054
1070
GET_I64_FROM_ADDR (frame_lp + src_offsets [0 ])); \
1055
1071
} \
1072
+ else if (cells [0 ] == 4 ) { \
1073
+ PUT_V128_TO_ADDR ( \
1074
+ frame_lp + dst_offsets [0 ], \
1075
+ GET_V128_FROM_ADDR (frame_lp + src_offsets [0 ])); \
1076
+ } \
1056
1077
} \
1057
1078
else { \
1058
1079
if (!copy_stack_values (module , frame_lp , arity , total_cell , \
0 commit comments