| Index: test/unittests/wasm/function-body-decoder-unittest.cc
|
| diff --git a/test/unittests/wasm/function-body-decoder-unittest.cc b/test/unittests/wasm/function-body-decoder-unittest.cc
|
| index 14a74f7b22721a41d8f8a58fb7755505cefee68a..82fdaf986699589205b47fa2dd14f6fda0f6c946 100644
|
| --- a/test/unittests/wasm/function-body-decoder-unittest.cc
|
| +++ b/test/unittests/wasm/function-body-decoder-unittest.cc
|
| @@ -671,7 +671,7 @@ TEST_F(FunctionBodyDecoderTest, Block3_continue) {
|
| }
|
|
|
| TEST_F(FunctionBodyDecoderTest, NestedBlock_return) {
|
| - EXPECT_VERIFIES(i_i, B1(B1(WASM_RETURN1(WASM_ZERO))));
|
| + EXPECT_VERIFIES(i_i, B1(B1(WASM_RETURN1(WASM_ZERO))), WASM_ZERO);
|
| }
|
|
|
| TEST_F(FunctionBodyDecoderTest, BlockBrBinop) {
|
| @@ -861,13 +861,18 @@ TEST_F(FunctionBodyDecoderTest, Loop2_break) {
|
| EXPECT_VERIFIES(v_i, WASM_LOOP(WASM_SET_LOCAL(0, WASM_ZERO), WASM_BR(1)));
|
| }
|
|
|
| -TEST_F(FunctionBodyDecoderTest, InfiniteLoop) {
|
| - EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0)));
|
| - EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BRV(1, WASM_ZERO)));
|
| +TEST_F(FunctionBodyDecoderTest, InfiniteLoop1) {
|
| + EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0)), WASM_ZERO);
|
| + EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0)), WASM_ZERO);
|
| + EXPECT_VERIFIES(i_i, WASM_LOOP_I(WASM_BRV(1, WASM_ZERO)));
|
| +}
|
| +
|
| +TEST_F(FunctionBodyDecoderTest, InfiniteLoop2) {
|
| + EXPECT_FAILURE(i_i, WASM_LOOP(WASM_BR(0), WASM_ZERO), WASM_ZERO);
|
| }
|
|
|
| TEST_F(FunctionBodyDecoderTest, Loop2_unreachable) {
|
| - EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0), WASM_NOP));
|
| + EXPECT_VERIFIES(i_i, WASM_LOOP_I(WASM_BR(0), WASM_NOP));
|
| }
|
|
|
| TEST_F(FunctionBodyDecoderTest, LoopType) {
|
| @@ -926,25 +931,45 @@ TEST_F(FunctionBodyDecoderTest, ReturnVoid3) {
|
| }
|
|
|
| TEST_F(FunctionBodyDecoderTest, Unreachable1) {
|
| - EXPECT_VERIFIES(v_v, kExprUnreachable);
|
| - EXPECT_VERIFIES(v_v, kExprUnreachable, kExprUnreachable);
|
| - EXPECT_VERIFIES(v_v, B2(WASM_UNREACHABLE, WASM_ZERO));
|
| - EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_ZERO));
|
| - EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_UNREACHABLE, WASM_ZERO));
|
| - EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_BR(0), WASM_ZERO));
|
| + EXPECT_VERIFIES(v_v, WASM_UNREACHABLE);
|
| + EXPECT_VERIFIES(v_v, WASM_UNREACHABLE, WASM_UNREACHABLE);
|
| + EXPECT_VERIFIES(i_i, WASM_UNREACHABLE, WASM_ZERO);
|
| +}
|
| +
|
| +TEST_F(FunctionBodyDecoderTest, Unreachable2) {
|
| + EXPECT_FAILURE(v_v, B2(WASM_UNREACHABLE, WASM_ZERO));
|
| + EXPECT_FAILURE(v_v, B2(WASM_BR(0), WASM_ZERO));
|
| }
|
|
|
| -TEST_F(FunctionBodyDecoderTest, Unreachable_binop) {
|
| +TEST_F(FunctionBodyDecoderTest, UnreachableLoop1) {
|
| + EXPECT_FAILURE(v_v, WASM_LOOP(WASM_UNREACHABLE, WASM_ZERO));
|
| + EXPECT_FAILURE(v_v, WASM_LOOP(WASM_BR(0), WASM_ZERO));
|
| + EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_UNREACHABLE, WASM_NOP));
|
| + EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_BR(0), WASM_NOP));
|
| +}
|
| +
|
| +TEST_F(FunctionBodyDecoderTest, Unreachable_binop1) {
|
| EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_ZERO, WASM_UNREACHABLE));
|
| EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_UNREACHABLE, WASM_ZERO));
|
| }
|
|
|
| -TEST_F(FunctionBodyDecoderTest, Unreachable_select) {
|
| +TEST_F(FunctionBodyDecoderTest, Unreachable_binop2) {
|
| + EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_F32(0.0), WASM_UNREACHABLE));
|
| + EXPECT_FAILURE(i_i, WASM_I32_AND(WASM_UNREACHABLE, WASM_F32(0.0)));
|
| +}
|
| +
|
| +TEST_F(FunctionBodyDecoderTest, Unreachable_select1) {
|
| EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_UNREACHABLE, WASM_ZERO, WASM_ZERO));
|
| EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_ZERO, WASM_UNREACHABLE, WASM_ZERO));
|
| EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_ZERO, WASM_ZERO, WASM_UNREACHABLE));
|
| }
|
|
|
| +TEST_F(FunctionBodyDecoderTest, Unreachable_select2) {
|
| + EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_F32(0.0), WASM_UNREACHABLE, WASM_ZERO));
|
| + EXPECT_FAILURE(i_i, WASM_SELECT(WASM_UNREACHABLE, WASM_F32(0.0), WASM_ZERO));
|
| + EXPECT_FAILURE(i_i, WASM_SELECT(WASM_UNREACHABLE, WASM_ZERO, WASM_F32(0.0)));
|
| +}
|
| +
|
| TEST_F(FunctionBodyDecoderTest, If1) {
|
| EXPECT_VERIFIES(
|
| i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_I32V_1(9), WASM_I32V_1(8)));
|
| @@ -2133,15 +2158,20 @@ TEST_F(FunctionBodyDecoderTest, BrTable_invalid_br2) {
|
| }
|
| }
|
|
|
| -TEST_F(FunctionBodyDecoderTest, BrUnreachable) {
|
| - static byte code[] = {WASM_GET_LOCAL(0), kExprBrTable, 0,
|
| - BR_TARGET(0), kExprSetLocal, 0};
|
| - EXPECT_VERIFIES_C(v_i, code);
|
| +TEST_F(FunctionBodyDecoderTest, BrUnreachable1) {
|
| + EXPECT_VERIFIES(v_i, WASM_GET_LOCAL(0), kExprBrTable, 0, BR_TARGET(0));
|
| +}
|
| +
|
| +TEST_F(FunctionBodyDecoderTest, BrUnreachable2) {
|
| + EXPECT_VERIFIES(v_i, WASM_GET_LOCAL(0), kExprBrTable, 0, BR_TARGET(0),
|
| + WASM_NOP);
|
| + EXPECT_FAILURE(v_i, WASM_GET_LOCAL(0), kExprBrTable, 0, BR_TARGET(0),
|
| + WASM_ZERO);
|
| }
|
|
|
| TEST_F(FunctionBodyDecoderTest, Brv1) {
|
| EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_BRV(0, WASM_ZERO)));
|
| - EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_LOOP(WASM_BRV(2, WASM_ZERO))));
|
| + EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_LOOP_I(WASM_BRV(2, WASM_ZERO))));
|
| }
|
|
|
| TEST_F(FunctionBodyDecoderTest, Brv1_type) {
|
|
|