Add missing V128 handling in WASM_OP_BR, reported in #4173

This commit is contained in:
James Marsh 2025-04-16 17:34:52 +01:00
parent 5d8fe5dcfd
commit 0702f788fd

View File

@ -1013,6 +1013,22 @@ fail:
SET_FRAME_REF((unsigned)(dst_offsets[0] + 1)); \ SET_FRAME_REF((unsigned)(dst_offsets[0] + 1)); \
} \ } \
} \ } \
else if (cells[0] == 4) { \
PUT_V128_TO_ADDR( \
frame_lp + dst_offsets[0], \
GET_V128_FROM_ADDR(frame_lp + src_offsets[0])); \
/* Ignore constants because they are not reference */ \
if (src_offsets[0] >= 0) { \
CLEAR_FRAME_REF((unsigned)src_offsets[0]); \
CLEAR_FRAME_REF((unsigned)(src_offsets[0] + 1)); \
CLEAR_FRAME_REF((unsigned)(src_offsets[0] + 2)); \
CLEAR_FRAME_REF((unsigned)(src_offsets[0] + 3)); \
SET_FRAME_REF((unsigned)dst_offsets[0]); \
SET_FRAME_REF((unsigned)(dst_offsets[0] + 1)); \
SET_FRAME_REF((unsigned)(dst_offsets[0] + 2)); \
SET_FRAME_REF((unsigned)(dst_offsets[0] + 3)); \
} \
} \
} \ } \
else { \ else { \
if (!copy_stack_values(module, frame_lp, arity, frame_ref, \ if (!copy_stack_values(module, frame_lp, arity, frame_ref, \
@ -1053,6 +1069,11 @@ fail:
frame_lp + dst_offsets[0], \ frame_lp + dst_offsets[0], \
GET_I64_FROM_ADDR(frame_lp + src_offsets[0])); \ GET_I64_FROM_ADDR(frame_lp + src_offsets[0])); \
} \ } \
else if (cells[0] == 4) { \
PUT_V128_TO_ADDR( \
frame_lp + dst_offsets[0], \
GET_V128_FROM_ADDR(frame_lp + src_offsets[0])); \
} \
} \ } \
else { \ else { \
if (!copy_stack_values(module, frame_lp, arity, total_cell, \ if (!copy_stack_values(module, frame_lp, arity, total_cell, \