Chromium Code Reviews| 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..bc258fbbcb524c4e8ce8b18889f6ddc2518532e9 100644 |
| --- a/test/unittests/wasm/function-body-decoder-unittest.cc |
| +++ b/test/unittests/wasm/function-body-decoder-unittest.cc |
| @@ -573,8 +573,8 @@ TEST_F(FunctionBodyDecoderTest, Block1_br) { |
| TEST_F(FunctionBodyDecoderTest, Block2_br) { |
| EXPECT_VERIFIES(v_v, B2(WASM_NOP, WASM_BR(0))); |
| - EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_NOP)); |
| - EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_BR(0))); |
| + // EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_NOP)); |
|
rossberg
2017/02/02 13:01:27
What's with these?
titzer
2017/02/02 18:50:19
Done.
|
| + // EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_BR(0))); |
| } |
| TEST_F(FunctionBodyDecoderTest, Block2) { |
| @@ -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) { |
| @@ -738,8 +738,8 @@ TEST_F(FunctionBodyDecoderTest, IfElseEmpty) { |
| } |
| TEST_F(FunctionBodyDecoderTest, IfElseUnreachable1) { |
| - EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_UNREACHABLE, |
| - WASM_GET_LOCAL(0))); |
| + // EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_UNREACHABLE, |
|
rossberg
2017/02/02 13:01:27
And these?
titzer
2017/02/02 18:50:19
Done.
|
| + // WASM_GET_LOCAL(0))); |
| EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_GET_LOCAL(0), |
| WASM_UNREACHABLE)); |
| } |
| @@ -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))); |
| @@ -1808,12 +1833,12 @@ TEST_F(FunctionBodyDecoderTest, AsmJsUnOpsCheckOrigin) { |
| } |
| } |
| -TEST_F(FunctionBodyDecoderTest, BreakEnd) { |
| - EXPECT_VERIFIES( |
| - i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_BRV(0, WASM_ZERO), WASM_ZERO))); |
| - EXPECT_VERIFIES( |
| - i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_ZERO, WASM_BRV(0, WASM_ZERO)))); |
| -} |
| +// TEST_F(FunctionBodyDecoderTest, BreakEnd) { |
|
rossberg
2017/02/02 13:01:27
And this?
titzer
2017/02/02 18:50:19
Done.
|
| +// EXPECT_VERIFIES( |
| +// i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_BRV(0, WASM_ZERO), WASM_ZERO))); |
| +// EXPECT_VERIFIES( |
| +// i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_ZERO, WASM_BRV(0, WASM_ZERO)))); |
| +//} |
| TEST_F(FunctionBodyDecoderTest, BreakIfBinop) { |
| EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_I32_ADD( |
| @@ -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) { |