| 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/cctest/wasm/test-signatures.h" | 9 #include "test/cctest/wasm/test-signatures.h" |
| 10 | 10 |
| (...skipping 1707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1718 public: | 1718 public: |
| 1719 WasmOpcodeLengthTest() : TestWithZone() {} | 1719 WasmOpcodeLengthTest() : TestWithZone() {} |
| 1720 }; | 1720 }; |
| 1721 | 1721 |
| 1722 #define EXPECT_LENGTH(expected, opcode) \ | 1722 #define EXPECT_LENGTH(expected, opcode) \ |
| 1723 { \ | 1723 { \ |
| 1724 static const byte code[] = {opcode, 0, 0, 0, 0, 0, 0, 0, 0}; \ | 1724 static const byte code[] = {opcode, 0, 0, 0, 0, 0, 0, 0, 0}; \ |
| 1725 EXPECT_EQ(expected, OpcodeLength(code, code + sizeof(code))); \ | 1725 EXPECT_EQ(expected, OpcodeLength(code, code + sizeof(code))); \ |
| 1726 } | 1726 } |
| 1727 | 1727 |
| 1728 #define EXPECT_LENGTH_N(expected, ...) \ |
| 1729 { \ |
| 1730 static const byte code[] = {__VA_ARGS__}; \ |
| 1731 EXPECT_EQ(expected, OpcodeLength(code, code + sizeof(code))); \ |
| 1732 } |
| 1733 |
| 1728 TEST_F(WasmOpcodeLengthTest, Statements) { | 1734 TEST_F(WasmOpcodeLengthTest, Statements) { |
| 1729 EXPECT_LENGTH(1, kExprNop); | 1735 EXPECT_LENGTH(1, kExprNop); |
| 1730 EXPECT_LENGTH(2, kExprBlock); | 1736 EXPECT_LENGTH(2, kExprBlock); |
| 1731 EXPECT_LENGTH(2, kExprLoop); | 1737 EXPECT_LENGTH(2, kExprLoop); |
| 1732 EXPECT_LENGTH(1, kExprIf); | 1738 EXPECT_LENGTH(1, kExprIf); |
| 1733 EXPECT_LENGTH(1, kExprIfElse); | 1739 EXPECT_LENGTH(1, kExprIfElse); |
| 1734 EXPECT_LENGTH(1, kExprSelect); | 1740 EXPECT_LENGTH(1, kExprSelect); |
| 1735 EXPECT_LENGTH(2, kExprBr); | 1741 EXPECT_LENGTH(2, kExprBr); |
| 1736 EXPECT_LENGTH(2, kExprBrIf); | 1742 EXPECT_LENGTH(2, kExprBrIf); |
| 1737 } | 1743 } |
| 1738 | 1744 |
| 1739 | 1745 |
| 1740 TEST_F(WasmOpcodeLengthTest, MiscExpressions) { | 1746 TEST_F(WasmOpcodeLengthTest, MiscExpressions) { |
| 1741 EXPECT_LENGTH(2, kExprI8Const); | 1747 EXPECT_LENGTH(2, kExprI8Const); |
| 1742 EXPECT_LENGTH(5, kExprI32Const); | |
| 1743 EXPECT_LENGTH(5, kExprF32Const); | 1748 EXPECT_LENGTH(5, kExprF32Const); |
| 1744 EXPECT_LENGTH(9, kExprI64Const); | |
| 1745 EXPECT_LENGTH(9, kExprF64Const); | 1749 EXPECT_LENGTH(9, kExprF64Const); |
| 1746 EXPECT_LENGTH(2, kExprGetLocal); | 1750 EXPECT_LENGTH(2, kExprGetLocal); |
| 1747 EXPECT_LENGTH(2, kExprSetLocal); | 1751 EXPECT_LENGTH(2, kExprSetLocal); |
| 1748 EXPECT_LENGTH(2, kExprLoadGlobal); | 1752 EXPECT_LENGTH(2, kExprLoadGlobal); |
| 1749 EXPECT_LENGTH(2, kExprStoreGlobal); | 1753 EXPECT_LENGTH(2, kExprStoreGlobal); |
| 1750 EXPECT_LENGTH(2, kExprCallFunction); | 1754 EXPECT_LENGTH(2, kExprCallFunction); |
| 1751 EXPECT_LENGTH(2, kExprCallImport); | 1755 EXPECT_LENGTH(2, kExprCallImport); |
| 1752 EXPECT_LENGTH(2, kExprCallIndirect); | 1756 EXPECT_LENGTH(2, kExprCallIndirect); |
| 1753 EXPECT_LENGTH(1, kExprIf); | 1757 EXPECT_LENGTH(1, kExprIf); |
| 1754 EXPECT_LENGTH(1, kExprIfElse); | 1758 EXPECT_LENGTH(1, kExprIfElse); |
| 1755 EXPECT_LENGTH(2, kExprBlock); | 1759 EXPECT_LENGTH(2, kExprBlock); |
| 1756 EXPECT_LENGTH(2, kExprLoop); | 1760 EXPECT_LENGTH(2, kExprLoop); |
| 1757 EXPECT_LENGTH(2, kExprBr); | 1761 EXPECT_LENGTH(2, kExprBr); |
| 1758 EXPECT_LENGTH(2, kExprBrIf); | 1762 EXPECT_LENGTH(2, kExprBrIf); |
| 1759 } | 1763 } |
| 1760 | 1764 |
| 1765 TEST_F(WasmOpcodeLengthTest, I32Const) { |
| 1766 EXPECT_LENGTH_N(2, kExprI32Const, U32V_1(1)); |
| 1767 EXPECT_LENGTH_N(3, kExprI32Const, U32V_2(999)); |
| 1768 EXPECT_LENGTH_N(4, kExprI32Const, U32V_3(9999)); |
| 1769 EXPECT_LENGTH_N(5, kExprI32Const, U32V_4(999999)); |
| 1770 EXPECT_LENGTH_N(6, kExprI32Const, U32V_5(99999999)); |
| 1771 } |
| 1772 |
| 1773 TEST_F(WasmOpcodeLengthTest, I64Const) { |
| 1774 EXPECT_LENGTH_N(2, kExprI64Const, U32V_1(1)); |
| 1775 EXPECT_LENGTH_N(3, kExprI64Const, U32V_2(99)); |
| 1776 EXPECT_LENGTH_N(4, kExprI64Const, U32V_3(9999)); |
| 1777 EXPECT_LENGTH_N(5, kExprI64Const, U32V_4(99999)); |
| 1778 EXPECT_LENGTH_N(6, kExprI64Const, U32V_5(9999999)); |
| 1779 EXPECT_LENGTH_N(7, WASM_I64V_6(777777)); |
| 1780 EXPECT_LENGTH_N(8, WASM_I64V_7(7777777)); |
| 1781 EXPECT_LENGTH_N(9, WASM_I64V_8(77777777)); |
| 1782 EXPECT_LENGTH_N(10, WASM_I64V_9(777777777)); |
| 1783 } |
| 1761 | 1784 |
| 1762 TEST_F(WasmOpcodeLengthTest, VariableLength) { | 1785 TEST_F(WasmOpcodeLengthTest, VariableLength) { |
| 1763 byte size2[] = {kExprLoadGlobal, 1}; | 1786 EXPECT_LENGTH_N(2, kExprLoadGlobal, U32V_1(1)); |
| 1764 byte size3[] = {kExprLoadGlobal, 1 | 0x80, 2}; | 1787 EXPECT_LENGTH_N(3, kExprLoadGlobal, U32V_2(33)); |
| 1765 byte size4[] = {kExprLoadGlobal, 1 | 0x80, 2 | 0x80, 3}; | 1788 EXPECT_LENGTH_N(4, kExprLoadGlobal, U32V_3(44)); |
| 1766 byte size5[] = {kExprLoadGlobal, 1 | 0x80, 2 | 0x80, 3 | 0x80, 4}; | 1789 EXPECT_LENGTH_N(5, kExprLoadGlobal, U32V_4(66)); |
| 1767 byte size6[] = {kExprLoadGlobal, 1 | 0x80, 2 | 0x80, 3 | 0x80, 4 | 0x80, 5}; | 1790 EXPECT_LENGTH_N(6, kExprLoadGlobal, U32V_5(77)); |
| 1768 | |
| 1769 EXPECT_EQ(2, OpcodeLength(size2, size2 + sizeof(size2))); | |
| 1770 EXPECT_EQ(3, OpcodeLength(size3, size3 + sizeof(size3))); | |
| 1771 EXPECT_EQ(4, OpcodeLength(size4, size4 + sizeof(size4))); | |
| 1772 EXPECT_EQ(5, OpcodeLength(size5, size5 + sizeof(size5))); | |
| 1773 EXPECT_EQ(6, OpcodeLength(size6, size6 + sizeof(size6))); | |
| 1774 } | 1791 } |
| 1775 | 1792 |
| 1776 | |
| 1777 TEST_F(WasmOpcodeLengthTest, LoadsAndStores) { | 1793 TEST_F(WasmOpcodeLengthTest, LoadsAndStores) { |
| 1778 EXPECT_LENGTH(3, kExprI32LoadMem8S); | 1794 EXPECT_LENGTH(3, kExprI32LoadMem8S); |
| 1779 EXPECT_LENGTH(3, kExprI32LoadMem8U); | 1795 EXPECT_LENGTH(3, kExprI32LoadMem8U); |
| 1780 EXPECT_LENGTH(3, kExprI32LoadMem16S); | 1796 EXPECT_LENGTH(3, kExprI32LoadMem16S); |
| 1781 EXPECT_LENGTH(3, kExprI32LoadMem16U); | 1797 EXPECT_LENGTH(3, kExprI32LoadMem16U); |
| 1782 EXPECT_LENGTH(3, kExprI32LoadMem); | 1798 EXPECT_LENGTH(3, kExprI32LoadMem); |
| 1783 EXPECT_LENGTH(3, kExprI64LoadMem8S); | 1799 EXPECT_LENGTH(3, kExprI64LoadMem8S); |
| 1784 EXPECT_LENGTH(3, kExprI64LoadMem8U); | 1800 EXPECT_LENGTH(3, kExprI64LoadMem8U); |
| 1785 EXPECT_LENGTH(3, kExprI64LoadMem16S); | 1801 EXPECT_LENGTH(3, kExprI64LoadMem16S); |
| 1786 EXPECT_LENGTH(3, kExprI64LoadMem16U); | 1802 EXPECT_LENGTH(3, kExprI64LoadMem16U); |
| (...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2264 pos = ExpectRun(map, pos, kAstI32, 1337); | 2280 pos = ExpectRun(map, pos, kAstI32, 1337); |
| 2265 pos = ExpectRun(map, pos, kAstI64, 212); | 2281 pos = ExpectRun(map, pos, kAstI64, 212); |
| 2266 | 2282 |
| 2267 if (map) delete map; | 2283 if (map) delete map; |
| 2268 delete[] data; | 2284 delete[] data; |
| 2269 } | 2285 } |
| 2270 | 2286 |
| 2271 } // namespace wasm | 2287 } // namespace wasm |
| 2272 } // namespace internal | 2288 } // namespace internal |
| 2273 } // namespace v8 | 2289 } // namespace v8 |
| OLD | NEW |