OLD | NEW |
---|---|
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "test/unittests/test-utils.h" | 5 #include "test/unittests/test-utils.h" |
6 | 6 |
7 #include "src/v8.h" | 7 #include "src/v8.h" |
8 | 8 |
9 #include "test/common/wasm/test-signatures.h" | 9 #include "test/common/wasm/test-signatures.h" |
10 | 10 |
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
566 } | 566 } |
567 | 567 |
568 TEST_F(FunctionBodyDecoderTest, Block1_br) { | 568 TEST_F(FunctionBodyDecoderTest, Block1_br) { |
569 EXPECT_VERIFIES(v_v, B1(WASM_BR(0))); | 569 EXPECT_VERIFIES(v_v, B1(WASM_BR(0))); |
570 EXPECT_VERIFIES(v_v, B1(WASM_BR(1))); | 570 EXPECT_VERIFIES(v_v, B1(WASM_BR(1))); |
571 EXPECT_FAILURE(v_v, B1(WASM_BR(2))); | 571 EXPECT_FAILURE(v_v, B1(WASM_BR(2))); |
572 } | 572 } |
573 | 573 |
574 TEST_F(FunctionBodyDecoderTest, Block2_br) { | 574 TEST_F(FunctionBodyDecoderTest, Block2_br) { |
575 EXPECT_VERIFIES(v_v, B2(WASM_NOP, WASM_BR(0))); | 575 EXPECT_VERIFIES(v_v, B2(WASM_NOP, WASM_BR(0))); |
576 EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_NOP)); | 576 // 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.
| |
577 EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_BR(0))); | 577 // EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_BR(0))); |
578 } | 578 } |
579 | 579 |
580 TEST_F(FunctionBodyDecoderTest, Block2) { | 580 TEST_F(FunctionBodyDecoderTest, Block2) { |
581 EXPECT_FAILURE(i_i, WASM_BLOCK(WASM_NOP, WASM_NOP)); | 581 EXPECT_FAILURE(i_i, WASM_BLOCK(WASM_NOP, WASM_NOP)); |
582 EXPECT_FAILURE(i_i, WASM_BLOCK_I(WASM_NOP, WASM_NOP)); | 582 EXPECT_FAILURE(i_i, WASM_BLOCK_I(WASM_NOP, WASM_NOP)); |
583 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_NOP, WASM_ZERO)); | 583 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_NOP, WASM_ZERO)); |
584 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_ZERO, WASM_NOP)); | 584 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_ZERO, WASM_NOP)); |
585 EXPECT_FAILURE(i_i, WASM_BLOCK_I(WASM_ZERO, WASM_ZERO)); | 585 EXPECT_FAILURE(i_i, WASM_BLOCK_I(WASM_ZERO, WASM_ZERO)); |
586 } | 586 } |
587 | 587 |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
664 } | 664 } |
665 | 665 |
666 TEST_F(FunctionBodyDecoderTest, Block3_continue) { | 666 TEST_F(FunctionBodyDecoderTest, Block3_continue) { |
667 EXPECT_VERIFIES(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(0)))); | 667 EXPECT_VERIFIES(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(0)))); |
668 EXPECT_VERIFIES(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(1)))); | 668 EXPECT_VERIFIES(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(1)))); |
669 EXPECT_VERIFIES(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(2)))); | 669 EXPECT_VERIFIES(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(2)))); |
670 EXPECT_FAILURE(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(3)))); | 670 EXPECT_FAILURE(v_v, B1(WASM_LOOP(WASM_NOP, WASM_BR(3)))); |
671 } | 671 } |
672 | 672 |
673 TEST_F(FunctionBodyDecoderTest, NestedBlock_return) { | 673 TEST_F(FunctionBodyDecoderTest, NestedBlock_return) { |
674 EXPECT_VERIFIES(i_i, B1(B1(WASM_RETURN1(WASM_ZERO)))); | 674 EXPECT_VERIFIES(i_i, B1(B1(WASM_RETURN1(WASM_ZERO))), WASM_ZERO); |
675 } | 675 } |
676 | 676 |
677 TEST_F(FunctionBodyDecoderTest, BlockBrBinop) { | 677 TEST_F(FunctionBodyDecoderTest, BlockBrBinop) { |
678 EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_BLOCK_I(WASM_BRV(0, WASM_I32V_1(1))), | 678 EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_BLOCK_I(WASM_BRV(0, WASM_I32V_1(1))), |
679 WASM_I32V_1(2))); | 679 WASM_I32V_1(2))); |
680 } | 680 } |
681 | 681 |
682 TEST_F(FunctionBodyDecoderTest, If_empty1) { | 682 TEST_F(FunctionBodyDecoderTest, If_empty1) { |
683 EXPECT_VERIFIES(v_v, WASM_ZERO, WASM_IF_OP, kExprEnd); | 683 EXPECT_VERIFIES(v_v, WASM_ZERO, WASM_IF_OP, kExprEnd); |
684 } | 684 } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
731 EXPECT_VERIFIES(v_i, WASM_IF_ELSE(WASM_GET_LOCAL(0), | 731 EXPECT_VERIFIES(v_i, WASM_IF_ELSE(WASM_GET_LOCAL(0), |
732 WASM_SET_LOCAL(0, WASM_ZERO), WASM_NOP)); | 732 WASM_SET_LOCAL(0, WASM_ZERO), WASM_NOP)); |
733 } | 733 } |
734 | 734 |
735 TEST_F(FunctionBodyDecoderTest, IfElseEmpty) { | 735 TEST_F(FunctionBodyDecoderTest, IfElseEmpty) { |
736 EXPECT_VERIFIES(v_i, WASM_GET_LOCAL(0), WASM_IF_OP, kExprElse, kExprEnd); | 736 EXPECT_VERIFIES(v_i, WASM_GET_LOCAL(0), WASM_IF_OP, kExprElse, kExprEnd); |
737 EXPECT_VERIFIES(v_i, WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_NOP, WASM_NOP)); | 737 EXPECT_VERIFIES(v_i, WASM_IF_ELSE(WASM_GET_LOCAL(0), WASM_NOP, WASM_NOP)); |
738 } | 738 } |
739 | 739 |
740 TEST_F(FunctionBodyDecoderTest, IfElseUnreachable1) { | 740 TEST_F(FunctionBodyDecoderTest, IfElseUnreachable1) { |
741 EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_UNREACHABLE, | 741 // 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.
| |
742 WASM_GET_LOCAL(0))); | 742 // WASM_GET_LOCAL(0))); |
743 EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_GET_LOCAL(0), | 743 EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_GET_LOCAL(0), |
744 WASM_UNREACHABLE)); | 744 WASM_UNREACHABLE)); |
745 } | 745 } |
746 | 746 |
747 TEST_F(FunctionBodyDecoderTest, IfElseUnreachable2) { | 747 TEST_F(FunctionBodyDecoderTest, IfElseUnreachable2) { |
748 static const byte code[] = { | 748 static const byte code[] = { |
749 WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_UNREACHABLE, WASM_GET_LOCAL(0))}; | 749 WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_UNREACHABLE, WASM_GET_LOCAL(0))}; |
750 | 750 |
751 for (size_t i = 0; i < arraysize(kValueTypes); i++) { | 751 for (size_t i = 0; i < arraysize(kValueTypes); i++) { |
752 ValueType types[] = {kWasmI32, kValueTypes[i]}; | 752 ValueType types[] = {kWasmI32, kValueTypes[i]}; |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
854 } | 854 } |
855 | 855 |
856 TEST_F(FunctionBodyDecoderTest, Loop2_continue) { | 856 TEST_F(FunctionBodyDecoderTest, Loop2_continue) { |
857 EXPECT_VERIFIES(v_i, WASM_LOOP(WASM_SET_LOCAL(0, WASM_ZERO), WASM_BR(0))); | 857 EXPECT_VERIFIES(v_i, WASM_LOOP(WASM_SET_LOCAL(0, WASM_ZERO), WASM_BR(0))); |
858 } | 858 } |
859 | 859 |
860 TEST_F(FunctionBodyDecoderTest, Loop2_break) { | 860 TEST_F(FunctionBodyDecoderTest, Loop2_break) { |
861 EXPECT_VERIFIES(v_i, WASM_LOOP(WASM_SET_LOCAL(0, WASM_ZERO), WASM_BR(1))); | 861 EXPECT_VERIFIES(v_i, WASM_LOOP(WASM_SET_LOCAL(0, WASM_ZERO), WASM_BR(1))); |
862 } | 862 } |
863 | 863 |
864 TEST_F(FunctionBodyDecoderTest, InfiniteLoop) { | 864 TEST_F(FunctionBodyDecoderTest, InfiniteLoop1) { |
865 EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0))); | 865 EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0)), WASM_ZERO); |
866 EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BRV(1, WASM_ZERO))); | 866 EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0)), WASM_ZERO); |
867 EXPECT_VERIFIES(i_i, WASM_LOOP_I(WASM_BRV(1, WASM_ZERO))); | |
868 } | |
869 | |
870 TEST_F(FunctionBodyDecoderTest, InfiniteLoop2) { | |
871 EXPECT_FAILURE(i_i, WASM_LOOP(WASM_BR(0), WASM_ZERO), WASM_ZERO); | |
867 } | 872 } |
868 | 873 |
869 TEST_F(FunctionBodyDecoderTest, Loop2_unreachable) { | 874 TEST_F(FunctionBodyDecoderTest, Loop2_unreachable) { |
870 EXPECT_VERIFIES(i_i, WASM_LOOP(WASM_BR(0), WASM_NOP)); | 875 EXPECT_VERIFIES(i_i, WASM_LOOP_I(WASM_BR(0), WASM_NOP)); |
871 } | 876 } |
872 | 877 |
873 TEST_F(FunctionBodyDecoderTest, LoopType) { | 878 TEST_F(FunctionBodyDecoderTest, LoopType) { |
874 EXPECT_VERIFIES(i_i, WASM_LOOP_I(WASM_GET_LOCAL(0))); | 879 EXPECT_VERIFIES(i_i, WASM_LOOP_I(WASM_GET_LOCAL(0))); |
875 EXPECT_VERIFIES(l_l, WASM_LOOP_L(WASM_GET_LOCAL(0))); | 880 EXPECT_VERIFIES(l_l, WASM_LOOP_L(WASM_GET_LOCAL(0))); |
876 EXPECT_VERIFIES(f_f, WASM_LOOP_F(WASM_GET_LOCAL(0))); | 881 EXPECT_VERIFIES(f_f, WASM_LOOP_F(WASM_GET_LOCAL(0))); |
877 EXPECT_VERIFIES(d_d, WASM_LOOP_D(WASM_GET_LOCAL(0))); | 882 EXPECT_VERIFIES(d_d, WASM_LOOP_D(WASM_GET_LOCAL(0))); |
878 } | 883 } |
879 | 884 |
880 TEST_F(FunctionBodyDecoderTest, LoopType_void) { | 885 TEST_F(FunctionBodyDecoderTest, LoopType_void) { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
919 TEST_F(FunctionBodyDecoderTest, ReturnVoid3) { | 924 TEST_F(FunctionBodyDecoderTest, ReturnVoid3) { |
920 EXPECT_FAILURE(v_v, kExprI32Const, 0); | 925 EXPECT_FAILURE(v_v, kExprI32Const, 0); |
921 EXPECT_FAILURE(v_v, kExprI64Const, 0); | 926 EXPECT_FAILURE(v_v, kExprI64Const, 0); |
922 EXPECT_FAILURE(v_v, kExprF32Const, 0, 0, 0, 0); | 927 EXPECT_FAILURE(v_v, kExprF32Const, 0, 0, 0, 0); |
923 EXPECT_FAILURE(v_v, kExprF64Const, 0, 0, 0, 0, 0, 0, 0, 0); | 928 EXPECT_FAILURE(v_v, kExprF64Const, 0, 0, 0, 0, 0, 0, 0, 0); |
924 | 929 |
925 EXPECT_FAILURE(v_i, kExprGetLocal, 0); | 930 EXPECT_FAILURE(v_i, kExprGetLocal, 0); |
926 } | 931 } |
927 | 932 |
928 TEST_F(FunctionBodyDecoderTest, Unreachable1) { | 933 TEST_F(FunctionBodyDecoderTest, Unreachable1) { |
929 EXPECT_VERIFIES(v_v, kExprUnreachable); | 934 EXPECT_VERIFIES(v_v, WASM_UNREACHABLE); |
930 EXPECT_VERIFIES(v_v, kExprUnreachable, kExprUnreachable); | 935 EXPECT_VERIFIES(v_v, WASM_UNREACHABLE, WASM_UNREACHABLE); |
931 EXPECT_VERIFIES(v_v, B2(WASM_UNREACHABLE, WASM_ZERO)); | 936 EXPECT_VERIFIES(i_i, WASM_UNREACHABLE, WASM_ZERO); |
932 EXPECT_VERIFIES(v_v, B2(WASM_BR(0), WASM_ZERO)); | |
933 EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_UNREACHABLE, WASM_ZERO)); | |
934 EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_BR(0), WASM_ZERO)); | |
935 } | 937 } |
936 | 938 |
937 TEST_F(FunctionBodyDecoderTest, Unreachable_binop) { | 939 TEST_F(FunctionBodyDecoderTest, Unreachable2) { |
940 EXPECT_FAILURE(v_v, B2(WASM_UNREACHABLE, WASM_ZERO)); | |
941 EXPECT_FAILURE(v_v, B2(WASM_BR(0), WASM_ZERO)); | |
942 } | |
943 | |
944 TEST_F(FunctionBodyDecoderTest, UnreachableLoop1) { | |
945 EXPECT_FAILURE(v_v, WASM_LOOP(WASM_UNREACHABLE, WASM_ZERO)); | |
946 EXPECT_FAILURE(v_v, WASM_LOOP(WASM_BR(0), WASM_ZERO)); | |
947 EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_UNREACHABLE, WASM_NOP)); | |
948 EXPECT_VERIFIES(v_v, WASM_LOOP(WASM_BR(0), WASM_NOP)); | |
949 } | |
950 | |
951 TEST_F(FunctionBodyDecoderTest, Unreachable_binop1) { | |
938 EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_ZERO, WASM_UNREACHABLE)); | 952 EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_ZERO, WASM_UNREACHABLE)); |
939 EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_UNREACHABLE, WASM_ZERO)); | 953 EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_UNREACHABLE, WASM_ZERO)); |
940 } | 954 } |
941 | 955 |
942 TEST_F(FunctionBodyDecoderTest, Unreachable_select) { | 956 TEST_F(FunctionBodyDecoderTest, Unreachable_binop2) { |
957 EXPECT_VERIFIES(i_i, WASM_I32_AND(WASM_F32(0.0), WASM_UNREACHABLE)); | |
958 EXPECT_FAILURE(i_i, WASM_I32_AND(WASM_UNREACHABLE, WASM_F32(0.0))); | |
959 } | |
960 | |
961 TEST_F(FunctionBodyDecoderTest, Unreachable_select1) { | |
943 EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_UNREACHABLE, WASM_ZERO, WASM_ZERO)); | 962 EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_UNREACHABLE, WASM_ZERO, WASM_ZERO)); |
944 EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_ZERO, WASM_UNREACHABLE, WASM_ZERO)); | 963 EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_ZERO, WASM_UNREACHABLE, WASM_ZERO)); |
945 EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_ZERO, WASM_ZERO, WASM_UNREACHABLE)); | 964 EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_ZERO, WASM_ZERO, WASM_UNREACHABLE)); |
946 } | 965 } |
947 | 966 |
967 TEST_F(FunctionBodyDecoderTest, Unreachable_select2) { | |
968 EXPECT_VERIFIES(i_i, WASM_SELECT(WASM_F32(0.0), WASM_UNREACHABLE, WASM_ZERO)); | |
969 EXPECT_FAILURE(i_i, WASM_SELECT(WASM_UNREACHABLE, WASM_F32(0.0), WASM_ZERO)); | |
970 EXPECT_FAILURE(i_i, WASM_SELECT(WASM_UNREACHABLE, WASM_ZERO, WASM_F32(0.0))); | |
971 } | |
972 | |
948 TEST_F(FunctionBodyDecoderTest, If1) { | 973 TEST_F(FunctionBodyDecoderTest, If1) { |
949 EXPECT_VERIFIES( | 974 EXPECT_VERIFIES( |
950 i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_I32V_1(9), WASM_I32V_1(8))); | 975 i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_I32V_1(9), WASM_I32V_1(8))); |
951 EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_I32V_1(9), | 976 EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_I32V_1(9), |
952 WASM_GET_LOCAL(0))); | 977 WASM_GET_LOCAL(0))); |
953 EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_GET_LOCAL(0), | 978 EXPECT_VERIFIES(i_i, WASM_IF_ELSE_I(WASM_GET_LOCAL(0), WASM_GET_LOCAL(0), |
954 WASM_I32V_1(8))); | 979 WASM_I32V_1(8))); |
955 } | 980 } |
956 | 981 |
957 TEST_F(FunctionBodyDecoderTest, If_off_end) { | 982 TEST_F(FunctionBodyDecoderTest, If_off_end) { |
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1801 TestModuleEnv module_env; | 1826 TestModuleEnv module_env; |
1802 module = &module_env; | 1827 module = &module_env; |
1803 module_env.InitializeMemory(); | 1828 module_env.InitializeMemory(); |
1804 for (size_t i = 0; i < arraysize(AsmJsUnOps); i++) { | 1829 for (size_t i = 0; i < arraysize(AsmJsUnOps); i++) { |
1805 byte code[] = {WASM_UNOP(AsmJsUnOps[i].op, WASM_GET_LOCAL(0))}; | 1830 byte code[] = {WASM_UNOP(AsmJsUnOps[i].op, WASM_GET_LOCAL(0))}; |
1806 EXPECT_FAILURE_SC(AsmJsUnOps[i].sig, code); | 1831 EXPECT_FAILURE_SC(AsmJsUnOps[i].sig, code); |
1807 } | 1832 } |
1808 } | 1833 } |
1809 } | 1834 } |
1810 | 1835 |
1811 TEST_F(FunctionBodyDecoderTest, BreakEnd) { | 1836 // TEST_F(FunctionBodyDecoderTest, BreakEnd) { |
rossberg
2017/02/02 13:01:27
And this?
titzer
2017/02/02 18:50:19
Done.
| |
1812 EXPECT_VERIFIES( | 1837 // EXPECT_VERIFIES( |
1813 i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_BRV(0, WASM_ZERO), WASM_ZERO))); | 1838 // i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_BRV(0, WASM_ZERO), WASM_ZERO))); |
1814 EXPECT_VERIFIES( | 1839 // EXPECT_VERIFIES( |
1815 i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_ZERO, WASM_BRV(0, WASM_ZERO)))); | 1840 // i_i, WASM_BLOCK_I(WASM_I32_ADD(WASM_ZERO, WASM_BRV(0, WASM_ZERO)))); |
1816 } | 1841 //} |
1817 | 1842 |
1818 TEST_F(FunctionBodyDecoderTest, BreakIfBinop) { | 1843 TEST_F(FunctionBodyDecoderTest, BreakIfBinop) { |
1819 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_I32_ADD( | 1844 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_I32_ADD( |
1820 WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO), WASM_ZERO))); | 1845 WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO), WASM_ZERO))); |
1821 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_I32_ADD( | 1846 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_I32_ADD( |
1822 WASM_ZERO, WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO)))); | 1847 WASM_ZERO, WASM_BRV_IF(0, WASM_ZERO, WASM_ZERO)))); |
1823 EXPECT_VERIFIES_S( | 1848 EXPECT_VERIFIES_S( |
1824 sigs.f_ff(), | 1849 sigs.f_ff(), |
1825 WASM_BLOCK_F(WASM_F32_ABS(WASM_BRV_IF(0, WASM_F32(0.0f), WASM_ZERO)))); | 1850 WASM_BLOCK_F(WASM_F32_ABS(WASM_BRV_IF(0, WASM_F32(0.0f), WASM_ZERO)))); |
1826 } | 1851 } |
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2126 byte code[] = { | 2151 byte code[] = { |
2127 WASM_LOOP(WASM_BR_TABLE(WASM_GET_LOCAL(0), 0, BR_TARGET(depth)))}; | 2152 WASM_LOOP(WASM_BR_TABLE(WASM_GET_LOCAL(0), 0, BR_TARGET(depth)))}; |
2128 if (depth < 2) { | 2153 if (depth < 2) { |
2129 EXPECT_VERIFIES_C(v_i, code); | 2154 EXPECT_VERIFIES_C(v_i, code); |
2130 } else { | 2155 } else { |
2131 EXPECT_FAILURE_C(v_i, code); | 2156 EXPECT_FAILURE_C(v_i, code); |
2132 } | 2157 } |
2133 } | 2158 } |
2134 } | 2159 } |
2135 | 2160 |
2136 TEST_F(FunctionBodyDecoderTest, BrUnreachable) { | 2161 TEST_F(FunctionBodyDecoderTest, BrUnreachable1) { |
2137 static byte code[] = {WASM_GET_LOCAL(0), kExprBrTable, 0, | 2162 EXPECT_VERIFIES(v_i, WASM_GET_LOCAL(0), kExprBrTable, 0, BR_TARGET(0)); |
2138 BR_TARGET(0), kExprSetLocal, 0}; | 2163 } |
2139 EXPECT_VERIFIES_C(v_i, code); | 2164 |
2165 TEST_F(FunctionBodyDecoderTest, BrUnreachable2) { | |
2166 EXPECT_VERIFIES(v_i, WASM_GET_LOCAL(0), kExprBrTable, 0, BR_TARGET(0), | |
2167 WASM_NOP); | |
2168 EXPECT_FAILURE(v_i, WASM_GET_LOCAL(0), kExprBrTable, 0, BR_TARGET(0), | |
2169 WASM_ZERO); | |
2140 } | 2170 } |
2141 | 2171 |
2142 TEST_F(FunctionBodyDecoderTest, Brv1) { | 2172 TEST_F(FunctionBodyDecoderTest, Brv1) { |
2143 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_BRV(0, WASM_ZERO))); | 2173 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_BRV(0, WASM_ZERO))); |
2144 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_LOOP(WASM_BRV(2, WASM_ZERO)))); | 2174 EXPECT_VERIFIES(i_i, WASM_BLOCK_I(WASM_LOOP_I(WASM_BRV(2, WASM_ZERO)))); |
2145 } | 2175 } |
2146 | 2176 |
2147 TEST_F(FunctionBodyDecoderTest, Brv1_type) { | 2177 TEST_F(FunctionBodyDecoderTest, Brv1_type) { |
2148 EXPECT_VERIFIES(i_ii, WASM_BLOCK_I(WASM_BRV(0, WASM_GET_LOCAL(0)))); | 2178 EXPECT_VERIFIES(i_ii, WASM_BLOCK_I(WASM_BRV(0, WASM_GET_LOCAL(0)))); |
2149 EXPECT_VERIFIES(l_ll, WASM_BLOCK_L(WASM_BRV(0, WASM_GET_LOCAL(0)))); | 2179 EXPECT_VERIFIES(l_ll, WASM_BLOCK_L(WASM_BRV(0, WASM_GET_LOCAL(0)))); |
2150 EXPECT_VERIFIES(f_ff, WASM_BLOCK_F(WASM_BRV(0, WASM_GET_LOCAL(0)))); | 2180 EXPECT_VERIFIES(f_ff, WASM_BLOCK_F(WASM_BRV(0, WASM_GET_LOCAL(0)))); |
2151 EXPECT_VERIFIES(d_dd, WASM_BLOCK_D(WASM_BRV(0, WASM_GET_LOCAL(0)))); | 2181 EXPECT_VERIFIES(d_dd, WASM_BLOCK_D(WASM_BRV(0, WASM_GET_LOCAL(0)))); |
2152 } | 2182 } |
2153 | 2183 |
2154 TEST_F(FunctionBodyDecoderTest, Brv1_type_n) { | 2184 TEST_F(FunctionBodyDecoderTest, Brv1_type_n) { |
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2777 iter.next(); | 2807 iter.next(); |
2778 EXPECT_TRUE(iter.has_next()); | 2808 EXPECT_TRUE(iter.has_next()); |
2779 EXPECT_EQ(kExprI32Const, iter.current()); | 2809 EXPECT_EQ(kExprI32Const, iter.current()); |
2780 iter.next(); | 2810 iter.next(); |
2781 EXPECT_FALSE(iter.has_next()); | 2811 EXPECT_FALSE(iter.has_next()); |
2782 } | 2812 } |
2783 | 2813 |
2784 } // namespace wasm | 2814 } // namespace wasm |
2785 } // namespace internal | 2815 } // namespace internal |
2786 } // namespace v8 | 2816 } // namespace v8 |
OLD | NEW |