Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Side by Side Diff: test/unittests/wasm/module-decoder-unittest.cc

Issue 1775873002: [Wasm] Convert many of the fixed-size values to LEB128. (Closed) Base URL: http://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/wasm/module-decoder.h" 7 #include "src/wasm/module-decoder.h"
8 #include "src/wasm/wasm-macro-gen.h" 8 #include "src/wasm/wasm-macro-gen.h"
9 #include "src/wasm/wasm-opcodes.h" 9 #include "src/wasm/wasm-opcodes.h"
10 10
(...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after
675 EXPECT_VERIFIES(data); 675 EXPECT_VERIFIES(data);
676 } else { 676 } else {
677 EXPECT_FAILURE(data); 677 EXPECT_FAILURE(data);
678 } 678 }
679 } 679 }
680 } 680 }
681 } 681 }
682 682
683 683
684 // To make below tests for indirect calls much shorter. 684 // To make below tests for indirect calls much shorter.
685 #define FUNCTION(sig_index, external) \ 685 #define FUNCTION(sig_index, external) kDeclFunctionImport, SIG_INDEX(sig_index)
686 kDeclFunctionImport, static_cast<byte>(sig_index), \
687 static_cast<byte>(sig_index >> 8)
688
689 686
690 TEST_F(WasmModuleVerifyTest, OneIndirectFunction) { 687 TEST_F(WasmModuleVerifyTest, OneIndirectFunction) {
691 static const byte data[] = { 688 static const byte data[] = {
692 // sig#0 ------------------------------------------------------- 689 // sig#0 -------------------------------------------------------
693 kDeclSignatures, 1, 0, 0, // void -> void 690 kDeclSignatures, 1, 0, 0, // void -> void
694 // func#0 ------------------------------------------------------ 691 // func#0 ------------------------------------------------------
695 kDeclFunctions, 1, FUNCTION(0, 0), 692 kDeclFunctions, 1, FUNCTION(0, 0),
696 // indirect table ---------------------------------------------- 693 // indirect table ----------------------------------------------
697 kDeclFunctionTable, 1, 0, 0}; 694 kDeclFunctionTable, 1, U32V_1(0)};
698 695
699 ModuleResult result = DecodeModule(data, data + arraysize(data)); 696 ModuleResult result = DecodeModule(data, data + arraysize(data));
700 EXPECT_TRUE(result.ok()); 697 EXPECT_TRUE(result.ok());
701 if (result.ok()) { 698 if (result.ok()) {
702 EXPECT_EQ(1, result.val->signatures.size()); 699 EXPECT_EQ(1, result.val->signatures.size());
703 EXPECT_EQ(1, result.val->functions.size()); 700 EXPECT_EQ(1, result.val->functions.size());
704 EXPECT_EQ(1, result.val->function_table.size()); 701 EXPECT_EQ(1, result.val->function_table.size());
705 EXPECT_EQ(0, result.val->function_table[0]); 702 EXPECT_EQ(0, result.val->function_table[0]);
706 } 703 }
707 if (result.val) delete result.val; 704 if (result.val) delete result.val;
708 } 705 }
709 706
710 707
711 TEST_F(WasmModuleVerifyTest, MultipleIndirectFunctions) { 708 TEST_F(WasmModuleVerifyTest, MultipleIndirectFunctions) {
712 static const byte data[] = { 709 static const byte data[] = {
713 // sig#0 ------------------------------------------------------- 710 // sig#0 -------------------------------------------------------
714 kDeclSignatures, 2, 0, 0, // void -> void 711 kDeclSignatures, 2, 0, 0, // void -> void
715 0, kLocalI32, // void -> i32 712 0, kLocalI32, // void -> i32
716 // func#0 ------------------------------------------------------ 713 // func#0 ------------------------------------------------------
717 kDeclFunctions, 4, FUNCTION(0, 1), // -- 714 kDeclFunctions, 4, FUNCTION(0, 1), // --
718 FUNCTION(1, 1), // -- 715 FUNCTION(1, 1), // --
719 FUNCTION(0, 1), // -- 716 FUNCTION(0, 1), // --
720 FUNCTION(1, 1), // -- 717 FUNCTION(1, 1), // --
721 // indirect table ---------------------------------------------- 718 // indirect table ----------------------------------------------
722 kDeclFunctionTable, 8, 719 kDeclFunctionTable, 8,
723 U16_LE(0), // -- 720 U32V_1(0), // --
724 U16_LE(1), // -- 721 U32V_1(1), // --
725 U16_LE(2), // -- 722 U32V_1(2), // --
726 U16_LE(3), // -- 723 U32V_1(3), // --
727 U16_LE(0), // -- 724 U32V_1(0), // --
728 U16_LE(1), // -- 725 U32V_1(1), // --
729 U16_LE(2), // -- 726 U32V_1(2), // --
730 U16_LE(3), // -- 727 U32V_1(3), // --
731 }; 728 };
732 729
733 ModuleResult result = DecodeModule(data, data + arraysize(data)); 730 ModuleResult result = DecodeModule(data, data + arraysize(data));
734 EXPECT_TRUE(result.ok()); 731 EXPECT_TRUE(result.ok());
735 if (result.ok()) { 732 if (result.ok()) {
736 EXPECT_EQ(2, result.val->signatures.size()); 733 EXPECT_EQ(2, result.val->signatures.size());
737 EXPECT_EQ(4, result.val->functions.size()); 734 EXPECT_EQ(4, result.val->functions.size());
738 EXPECT_EQ(8, result.val->function_table.size()); 735 EXPECT_EQ(8, result.val->function_table.size());
739 for (int i = 0; i < 8; i++) { 736 for (int i = 0; i < 8; i++) {
740 EXPECT_EQ(i & 3, result.val->function_table[i]); 737 EXPECT_EQ(i & 3, result.val->function_table[i]);
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 EXPECT_FAILURE(data); 1078 EXPECT_FAILURE(data);
1082 } 1079 }
1083 1080
1084 TEST_F(WasmModuleVerifyTest, ImportTable_one_sig) { 1081 TEST_F(WasmModuleVerifyTest, ImportTable_one_sig) {
1085 static const byte data[] = { 1082 static const byte data[] = {
1086 kDeclSignatures, 1083 kDeclSignatures,
1087 1, 1084 1,
1088 VOID_VOID_SIG, 1085 VOID_VOID_SIG,
1089 kDeclImportTable, 1086 kDeclImportTable,
1090 1, // -- 1087 1, // --
1091 SIG_INDEX(0), // sig index 1088 U32V_1(0), // sig index
1092 NAME_OFFSET(1), // module name 1089 NAME_OFFSET(1), // module name
1093 NAME_OFFSET(1) // function name 1090 NAME_OFFSET(1) // function name
1094 }; 1091 };
1095 EXPECT_VERIFIES(data); 1092 EXPECT_VERIFIES(data);
1096 } 1093 }
1097 1094
1098 TEST_F(WasmModuleVerifyTest, ImportTable_off_end) { 1095 TEST_F(WasmModuleVerifyTest, ImportTable_off_end) {
1099 static const byte data[] = { 1096 static const byte data[] = {
1100 kDeclSignatures, 1, VOID_VOID_SIG, kDeclImportTable, 1, 1097 kDeclSignatures, 1, VOID_VOID_SIG, kDeclImportTable, 1,
1101 SIG_INDEX(0), // sig index 1098 SIG_INDEX(0), // sig index
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
1205 for (int length = 13; length < sizeof(data); length++) { 1202 for (int length = 13; length < sizeof(data); length++) {
1206 ModuleResult result = DecodeModule(data, data + length); 1203 ModuleResult result = DecodeModule(data, data + length);
1207 EXPECT_FALSE(result.ok()); 1204 EXPECT_FALSE(result.ok());
1208 if (result.val) delete result.val; 1205 if (result.val) delete result.val;
1209 } 1206 }
1210 } 1207 }
1211 1208
1212 } // namespace wasm 1209 } // namespace wasm
1213 } // namespace internal 1210 } // namespace internal
1214 } // namespace v8 1211 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698