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

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

Issue 2165633006: [wasm] Remove special memory type for (internal) globals and use local type instead. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: [wasm] Remove special memory type for (internal) globals and use local type instead. Created 4 years, 5 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
« no previous file with comments | « test/unittests/wasm/ast-decoder-unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/handles.h" 7 #include "src/handles.h"
8 #include "src/objects-inl.h" 8 #include "src/objects-inl.h"
9 #include "src/wasm/module-decoder.h" 9 #include "src/wasm/module-decoder.h"
10 #include "src/wasm/wasm-macro-gen.h" 10 #include "src/wasm/wasm-macro-gen.h"
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 TEST_F(WasmModuleVerifyTest, DecodeEmpty) { 170 TEST_F(WasmModuleVerifyTest, DecodeEmpty) {
171 static const byte data[] = {SECTION(END, 0)}; 171 static const byte data[] = {SECTION(END, 0)};
172 EXPECT_VERIFIES(data); 172 EXPECT_VERIFIES(data);
173 } 173 }
174 174
175 TEST_F(WasmModuleVerifyTest, OneGlobal) { 175 TEST_F(WasmModuleVerifyTest, OneGlobal) {
176 static const byte data[] = { 176 static const byte data[] = {
177 SECTION(GLOBALS, 5), // -- 177 SECTION(GLOBALS, 5), // --
178 1, 178 1,
179 NAME_LENGTH(1), 179 NAME_LENGTH(1),
180 'g', // name 180 'g', // name
181 kMemI32, // memory type 181 kLocalI32, // local type
182 0, // exported 182 0, // exported
183 }; 183 };
184 184
185 { 185 {
186 // Should decode to exactly one global. 186 // Should decode to exactly one global.
187 ModuleResult result = DecodeModule(data, data + arraysize(data)); 187 ModuleResult result = DecodeModule(data, data + arraysize(data));
188 EXPECT_OK(result); 188 EXPECT_OK(result);
189 EXPECT_EQ(1, result.val->globals.size()); 189 EXPECT_EQ(1, result.val->globals.size());
190 EXPECT_EQ(0, result.val->functions.size()); 190 EXPECT_EQ(0, result.val->functions.size());
191 EXPECT_EQ(0, result.val->data_segments.size()); 191 EXPECT_EQ(0, result.val->data_segments.size());
192 192
193 const WasmGlobal* global = &result.val->globals.back(); 193 const WasmGlobal* global = &result.val->globals.back();
194 194
195 EXPECT_EQ(1, global->name_length); 195 EXPECT_EQ(1, global->name_length);
196 EXPECT_EQ(MachineType::Int32(), global->type); 196 EXPECT_EQ(kAstI32, global->type);
197 EXPECT_EQ(0, global->offset); 197 EXPECT_EQ(0, global->offset);
198 EXPECT_FALSE(global->exported); 198 EXPECT_FALSE(global->exported);
199 199
200 if (result.val) delete result.val; 200 if (result.val) delete result.val;
201 } 201 }
202 202
203 EXPECT_OFF_END_FAILURE(data, 1, sizeof(data)); 203 EXPECT_OFF_END_FAILURE(data, 1, sizeof(data));
204 } 204 }
205 205
206 TEST_F(WasmModuleVerifyTest, Global_invalid_type) { 206 TEST_F(WasmModuleVerifyTest, Global_invalid_type) {
(...skipping 30 matching lines...) Expand all
237 val = next; 237 val = next;
238 } else { 238 } else {
239 buffer.push_back(static_cast<byte>(out)); 239 buffer.push_back(static_cast<byte>(out));
240 break; 240 break;
241 } 241 }
242 } 242 }
243 } 243 }
244 244
245 TEST_F(WasmModuleVerifyTest, NGlobals) { 245 TEST_F(WasmModuleVerifyTest, NGlobals) {
246 static const byte data[] = { 246 static const byte data[] = {
247 NO_NAME, // name length 247 NO_NAME, // name length
248 kMemI32, // memory type 248 kLocalF32, // memory type
249 0, // exported 249 0, // exported
250 }; 250 };
251 251
252 for (uint32_t i = 0; i < 1000000; i = i * 13 + 1) { 252 for (uint32_t i = 0; i < 1000000; i = i * 13 + 1) {
253 std::vector<byte> buffer; 253 std::vector<byte> buffer;
254 size_t size = SizeOfVarInt(i) + i * sizeof(data); 254 size_t size = SizeOfVarInt(i) + i * sizeof(data);
255 const byte globals[] = {WASM_SECTION_GLOBALS, U32V_5(size)}; 255 const byte globals[] = {WASM_SECTION_GLOBALS, U32V_5(size)};
256 for (size_t g = 0; g != sizeof(globals); ++g) { 256 for (size_t g = 0; g != sizeof(globals); ++g) {
257 buffer.push_back(globals[g]); 257 buffer.push_back(globals[g]);
258 } 258 }
259 AppendUint32v(buffer, i); // Number of globals. 259 AppendUint32v(buffer, i); // Number of globals.
(...skipping 28 matching lines...) Expand all
288 0, // exported 288 0, // exported
289 }; 289 };
290 290
291 EXPECT_FAILURE(data); 291 EXPECT_FAILURE(data);
292 } 292 }
293 293
294 TEST_F(WasmModuleVerifyTest, TwoGlobals) { 294 TEST_F(WasmModuleVerifyTest, TwoGlobals) {
295 static const byte data[] = { 295 static const byte data[] = {
296 SECTION(GLOBALS, 7), 296 SECTION(GLOBALS, 7),
297 2, 297 2,
298 NO_NAME, // #0: name length 298 NO_NAME, // #0: name length
299 kMemF32, // memory type 299 kLocalF32, // type
300 0, // exported 300 0, // exported
301 NO_NAME, // #1: name length 301 NO_NAME, // #1: name length
302 kMemF64, // memory type 302 kLocalF64, // type
303 1, // exported 303 1, // exported
304 }; 304 };
305 305
306 { 306 {
307 // Should decode to exactly two globals. 307 // Should decode to exactly two globals.
308 ModuleResult result = DecodeModule(data, data + arraysize(data)); 308 ModuleResult result = DecodeModule(data, data + arraysize(data));
309 EXPECT_OK(result); 309 EXPECT_OK(result);
310 EXPECT_EQ(2, result.val->globals.size()); 310 EXPECT_EQ(2, result.val->globals.size());
311 EXPECT_EQ(0, result.val->functions.size()); 311 EXPECT_EQ(0, result.val->functions.size());
312 EXPECT_EQ(0, result.val->data_segments.size()); 312 EXPECT_EQ(0, result.val->data_segments.size());
313 313
314 const WasmGlobal* g0 = &result.val->globals[0]; 314 const WasmGlobal* g0 = &result.val->globals[0];
315 const WasmGlobal* g1 = &result.val->globals[1]; 315 const WasmGlobal* g1 = &result.val->globals[1];
316 316
317 EXPECT_EQ(0, g0->name_length); 317 EXPECT_EQ(0, g0->name_length);
318 EXPECT_EQ(MachineType::Float32(), g0->type); 318 EXPECT_EQ(kAstF32, g0->type);
319 EXPECT_EQ(0, g0->offset); 319 EXPECT_EQ(0, g0->offset);
320 EXPECT_FALSE(g0->exported); 320 EXPECT_FALSE(g0->exported);
321 321
322 EXPECT_EQ(0, g1->name_length); 322 EXPECT_EQ(0, g1->name_length);
323 EXPECT_EQ(MachineType::Float64(), g1->type); 323 EXPECT_EQ(kAstF64, g1->type);
324 EXPECT_EQ(8, g1->offset); 324 EXPECT_EQ(8, g1->offset);
325 EXPECT_TRUE(g1->exported); 325 EXPECT_TRUE(g1->exported);
326 326
327 if (result.val) delete result.val; 327 if (result.val) delete result.val;
328 } 328 }
329 329
330 EXPECT_OFF_END_FAILURE(data, 1, sizeof(data)); 330 EXPECT_OFF_END_FAILURE(data, 1, sizeof(data));
331 } 331 }
332 332
333 TEST_F(WasmModuleVerifyTest, OneSignature) { 333 TEST_F(WasmModuleVerifyTest, OneSignature) {
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 EXPECT_FAILURE(data); 850 EXPECT_FAILURE(data);
851 } 851 }
852 852
853 TEST_F(WasmModuleVerifyTest, UnknownSectionSkipped) { 853 TEST_F(WasmModuleVerifyTest, UnknownSectionSkipped) {
854 static const byte data[] = { 854 static const byte data[] = {
855 UNKNOWN_EMPTY_SECTION_NAME, 855 UNKNOWN_EMPTY_SECTION_NAME,
856 1, // section size 856 1, // section size
857 0, // one byte section 857 0, // one byte section
858 SECTION(GLOBALS, 4), 858 SECTION(GLOBALS, 4),
859 1, 859 1,
860 0, // name length 860 0, // name length
861 kMemI32, // memory type 861 kLocalI32, // memory type
862 0, // exported 862 0, // exported
863 }; 863 };
864 ModuleResult result = DecodeModule(data, data + arraysize(data)); 864 ModuleResult result = DecodeModule(data, data + arraysize(data));
865 EXPECT_OK(result); 865 EXPECT_OK(result);
866 866
867 EXPECT_EQ(1, result.val->globals.size()); 867 EXPECT_EQ(1, result.val->globals.size());
868 EXPECT_EQ(0, result.val->functions.size()); 868 EXPECT_EQ(0, result.val->functions.size());
869 EXPECT_EQ(0, result.val->data_segments.size()); 869 EXPECT_EQ(0, result.val->data_segments.size());
870 870
871 const WasmGlobal* global = &result.val->globals.back(); 871 const WasmGlobal* global = &result.val->globals.back();
872 872
873 EXPECT_EQ(0, global->name_length); 873 EXPECT_EQ(0, global->name_length);
874 EXPECT_EQ(MachineType::Int32(), global->type); 874 EXPECT_EQ(kAstI32, global->type);
875 EXPECT_EQ(0, global->offset); 875 EXPECT_EQ(0, global->offset);
876 EXPECT_FALSE(global->exported); 876 EXPECT_FALSE(global->exported);
877 877
878 if (result.val) delete result.val; 878 if (result.val) delete result.val;
879 } 879 }
880 880
881 TEST_F(WasmModuleVerifyTest, ImportTable_empty) { 881 TEST_F(WasmModuleVerifyTest, ImportTable_empty) {
882 static const byte data[] = {SECTION(SIGNATURES, 1), 0, 882 static const byte data[] = {SECTION(SIGNATURES, 1), 0,
883 SECTION(IMPORT_TABLE, 1), 0}; 883 SECTION(IMPORT_TABLE, 1), 0};
884 EXPECT_VERIFIES(data); 884 EXPECT_VERIFIES(data);
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1202 NO_LOCAL_NAMES, // -- 1202 NO_LOCAL_NAMES, // --
1203 FOO_STRING, 1203 FOO_STRING,
1204 NO_LOCAL_NAMES, // -- 1204 NO_LOCAL_NAMES, // --
1205 }; 1205 };
1206 EXPECT_VERIFIES(data); 1206 EXPECT_VERIFIES(data);
1207 } 1207 }
1208 1208
1209 } // namespace wasm 1209 } // namespace wasm
1210 } // namespace internal 1210 } // namespace internal
1211 } // namespace v8 1211 } // namespace v8
OLDNEW
« no previous file with comments | « test/unittests/wasm/ast-decoder-unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698