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

Side by Side Diff: test/mjsunit/wasm/grow-memory.js

Issue 2371833007: [wasm] Initial signal handler (Closed)
Patch Set: Restore signal mask at the right place Created 3 years, 10 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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 // Flags: --expose-wasm --stress-compaction 5 // Flags: --expose-wasm --stress-compaction
6 6
7 load("test/mjsunit/wasm/wasm-constants.js"); 7 load("test/mjsunit/wasm/wasm-constants.js");
8 load("test/mjsunit/wasm/wasm-module-builder.js"); 8 load("test/mjsunit/wasm/wasm-module-builder.js");
9 9
10 var kPageSize = 0x10000; 10 var kPageSize = 0x10000;
(...skipping 24 matching lines...) Expand all
35 builder.addFunction("store8", kSig_i_ii) 35 builder.addFunction("store8", kSig_i_ii)
36 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem8, 0, 0, 36 .addBody([kExprGetLocal, 0, kExprGetLocal, 1, kExprI32StoreMem8, 0, 0,
37 kExprGetLocal, 1]) 37 kExprGetLocal, 1])
38 .exportFunc(); 38 .exportFunc();
39 return builder; 39 return builder;
40 } 40 }
41 41
42 // TODO(gdeepti): Generate tests programatically for all the sizes instead of 42 // TODO(gdeepti): Generate tests programatically for all the sizes instead of
43 // current implementation. 43 // current implementation.
44 function testGrowMemoryReadWrite32() { 44 function testGrowMemoryReadWrite32() {
45 print('testGrowMemoryReadWrite32');
Mark Seaborn 2017/02/17 21:41:12 Is this debugging that should be removed?
Eric Holk 2017/02/23 02:16:57 We're inconsistent about this; some tests print th
45 var builder = genGrowMemoryBuilder(); 46 var builder = genGrowMemoryBuilder();
46 builder.addMemory(1, kV8MaxPages, false); 47 builder.addMemory(1, kV8MaxPages, false);
47 var module = builder.instantiate(); 48 var module = builder.instantiate();
48 var offset; 49 var offset;
49 function peek() { return module.exports.load(offset); } 50 function peek() { return module.exports.load(offset); }
50 function poke(value) { return module.exports.store(offset, value); } 51 function poke(value) { return module.exports.store(offset, value); }
51 function growMem(pages) { return module.exports.grow_memory(pages); } 52 function growMem(pages) { return module.exports.grow_memory(pages); }
52 53
53 for(offset = 0; offset <= (kPageSize - 4); offset+=4) { 54 for(offset = 0; offset <= (kPageSize - 4); offset+=4) {
54 poke(20); 55 poke(20);
(...skipping 27 matching lines...) Expand all
82 } 83 }
83 for (offset = 19*kPageSize - 3; offset < 19*kPageSize + 5; offset++) { 84 for (offset = 19*kPageSize - 3; offset < 19*kPageSize + 5; offset++) {
84 assertTraps(kTrapMemOutOfBounds, poke); 85 assertTraps(kTrapMemOutOfBounds, poke);
85 assertTraps(kTrapMemOutOfBounds, peek); 86 assertTraps(kTrapMemOutOfBounds, peek);
86 } 87 }
87 } 88 }
88 89
89 testGrowMemoryReadWrite32(); 90 testGrowMemoryReadWrite32();
90 91
91 function testGrowMemoryReadWrite16() { 92 function testGrowMemoryReadWrite16() {
93 print('testGrowMemoryReadWrite16');
92 var builder = genGrowMemoryBuilder(); 94 var builder = genGrowMemoryBuilder();
93 builder.addMemory(1, kV8MaxPages, false); 95 builder.addMemory(1, kV8MaxPages, false);
94 var module = builder.instantiate(); 96 var module = builder.instantiate();
95 var offset; 97 var offset;
96 function peek() { return module.exports.load16(offset); } 98 function peek() { return module.exports.load16(offset); }
97 function poke(value) { return module.exports.store16(offset, value); } 99 function poke(value) { return module.exports.store16(offset, value); }
98 function growMem(pages) { return module.exports.grow_memory(pages); } 100 function growMem(pages) { return module.exports.grow_memory(pages); }
99 101
100 for(offset = 0; offset <= (kPageSize - 2); offset+=2) { 102 for(offset = 0; offset <= (kPageSize - 2); offset+=2) {
101 poke(20); 103 poke(20);
(...skipping 27 matching lines...) Expand all
129 } 131 }
130 for (offset = 19*kPageSize - 1; offset < 19*kPageSize + 5; offset++) { 132 for (offset = 19*kPageSize - 1; offset < 19*kPageSize + 5; offset++) {
131 assertTraps(kTrapMemOutOfBounds, poke); 133 assertTraps(kTrapMemOutOfBounds, poke);
132 assertTraps(kTrapMemOutOfBounds, peek); 134 assertTraps(kTrapMemOutOfBounds, peek);
133 } 135 }
134 } 136 }
135 137
136 testGrowMemoryReadWrite16(); 138 testGrowMemoryReadWrite16();
137 139
138 function testGrowMemoryReadWrite8() { 140 function testGrowMemoryReadWrite8() {
141 print('testGrowMemoryReadWrite8');
139 var builder = genGrowMemoryBuilder(); 142 var builder = genGrowMemoryBuilder();
140 builder.addMemory(1, kV8MaxPages, false); 143 builder.addMemory(1, kV8MaxPages, false);
141 var module = builder.instantiate(); 144 var module = builder.instantiate();
142 var offset; 145 var offset;
143 function peek() { return module.exports.load8(offset); } 146 function peek() { return module.exports.load8(offset); }
144 function poke(value) { return module.exports.store8(offset, value); } 147 function poke(value) { return module.exports.store8(offset, value); }
145 function growMem(pages) { return module.exports.grow_memory(pages); } 148 function growMem(pages) { return module.exports.grow_memory(pages); }
146 149
147 for(offset = 0; offset <= kPageSize - 1; offset++) { 150 for(offset = 0; offset <= kPageSize - 1; offset++) {
148 poke(20); 151 poke(20);
(...skipping 27 matching lines...) Expand all
176 } 179 }
177 for (offset = 19*kPageSize; offset < 19*kPageSize + 5; offset++) { 180 for (offset = 19*kPageSize; offset < 19*kPageSize + 5; offset++) {
178 assertTraps(kTrapMemOutOfBounds, poke); 181 assertTraps(kTrapMemOutOfBounds, poke);
179 assertTraps(kTrapMemOutOfBounds, peek); 182 assertTraps(kTrapMemOutOfBounds, peek);
180 } 183 }
181 } 184 }
182 185
183 testGrowMemoryReadWrite8(); 186 testGrowMemoryReadWrite8();
184 187
185 function testGrowMemoryZeroInitialSize() { 188 function testGrowMemoryZeroInitialSize() {
189 print('testGrowMemoryZeroInitialSize');
186 var builder = genGrowMemoryBuilder(); 190 var builder = genGrowMemoryBuilder();
187 builder.addMemory(0, kV8MaxPages, false); 191 builder.addMemory(0, kV8MaxPages, false);
188 var module = builder.instantiate(); 192 var module = builder.instantiate();
189 var offset; 193 var offset;
190 function peek() { return module.exports.load(offset); } 194 function peek() { return module.exports.load(offset); }
191 function poke(value) { return module.exports.store(offset, value); } 195 function poke(value) { return module.exports.store(offset, value); }
192 function growMem(pages) { return module.exports.grow_memory(pages); } 196 function growMem(pages) { return module.exports.grow_memory(pages); }
193 197
194 assertTraps(kTrapMemOutOfBounds, peek); 198 assertTraps(kTrapMemOutOfBounds, peek);
195 assertTraps(kTrapMemOutOfBounds, poke); 199 assertTraps(kTrapMemOutOfBounds, poke);
(...skipping 14 matching lines...) Expand all
210 assertTraps(kTrapMemOutOfBounds, poke); 214 assertTraps(kTrapMemOutOfBounds, poke);
211 assertEquals(i, growMem(1)); 215 assertEquals(i, growMem(1));
212 } 216 }
213 poke(20); 217 poke(20);
214 assertEquals(20, peek()); 218 assertEquals(20, peek());
215 } 219 }
216 220
217 testGrowMemoryZeroInitialSize(); 221 testGrowMemoryZeroInitialSize();
218 222
219 function testGrowMemoryZeroInitialSize32() { 223 function testGrowMemoryZeroInitialSize32() {
224 print('testGrowMemoryZeroInitialSize32');
220 var builder = genGrowMemoryBuilder(); 225 var builder = genGrowMemoryBuilder();
221 builder.addMemory(0, kV8MaxPages, false); 226 builder.addMemory(0, kV8MaxPages, false);
222 var module = builder.instantiate(); 227 var module = builder.instantiate();
223 var offset; 228 var offset;
224 function peek() { return module.exports.load(offset); } 229 function peek() { return module.exports.load(offset); }
225 function poke(value) { return module.exports.store(offset, value); } 230 function poke(value) { return module.exports.store(offset, value); }
226 function growMem(pages) { return module.exports.grow_memory(pages); } 231 function growMem(pages) { return module.exports.grow_memory(pages); }
227 232
228 assertTraps(kTrapMemOutOfBounds, peek); 233 assertTraps(kTrapMemOutOfBounds, peek);
229 assertTraps(kTrapMemOutOfBounds, poke); 234 assertTraps(kTrapMemOutOfBounds, poke);
230 235
231 assertEquals(0, growMem(1)); 236 assertEquals(0, growMem(1));
232 237
233 for(offset = 0; offset <= kPageSize - 4; offset++) { 238 for(offset = 0; offset <= kPageSize - 4; offset++) {
234 poke(20); 239 poke(20);
235 assertEquals(20, peek()); 240 assertEquals(20, peek());
236 } 241 }
237 242
238 for(offset = kPageSize - 3; offset <= kPageSize + 5; offset++) { 243 for(offset = kPageSize - 3; offset <= kPageSize + 5; offset++) {
239 assertTraps(kTrapMemOutOfBounds, peek); 244 assertTraps(kTrapMemOutOfBounds, peek);
240 } 245 }
241 } 246 }
242 247
243 testGrowMemoryZeroInitialSize32(); 248 testGrowMemoryZeroInitialSize32();
244 249
245 function testGrowMemoryZeroInitialSize16() { 250 function testGrowMemoryZeroInitialSize16() {
251 print('testGrowMemoryZeroInitialSize16');
246 var builder = genGrowMemoryBuilder(); 252 var builder = genGrowMemoryBuilder();
247 builder.addMemory(0, kV8MaxPages, false); 253 builder.addMemory(0, kV8MaxPages, false);
248 var module = builder.instantiate(); 254 var module = builder.instantiate();
249 var offset; 255 var offset;
250 function peek() { return module.exports.load16(offset); } 256 function peek() { return module.exports.load16(offset); }
251 function poke(value) { return module.exports.store16(offset, value); } 257 function poke(value) { return module.exports.store16(offset, value); }
252 function growMem(pages) { return module.exports.grow_memory(pages); } 258 function growMem(pages) { return module.exports.grow_memory(pages); }
253 259
254 assertTraps(kTrapMemOutOfBounds, peek); 260 assertTraps(kTrapMemOutOfBounds, peek);
255 assertTraps(kTrapMemOutOfBounds, poke); 261 assertTraps(kTrapMemOutOfBounds, poke);
256 262
257 assertEquals(0, growMem(1)); 263 assertEquals(0, growMem(1));
258 264
259 for(offset = 0; offset <= kPageSize - 2; offset++) { 265 for(offset = 0; offset <= kPageSize - 2; offset++) {
260 poke(20); 266 poke(20);
261 assertEquals(20, peek()); 267 assertEquals(20, peek());
262 } 268 }
263 269
264 for(offset = kPageSize - 1; offset <= kPageSize + 5; offset++) { 270 for(offset = kPageSize - 1; offset <= kPageSize + 5; offset++) {
265 assertTraps(kTrapMemOutOfBounds, peek); 271 assertTraps(kTrapMemOutOfBounds, peek);
266 } 272 }
267 } 273 }
268 274
269 testGrowMemoryZeroInitialSize16(); 275 testGrowMemoryZeroInitialSize16();
270 276
271 function testGrowMemoryZeroInitialSize8() { 277 function testGrowMemoryZeroInitialSize8() {
278 print('testGrowMemoryZeroInitialSize8');
272 var builder = genGrowMemoryBuilder(); 279 var builder = genGrowMemoryBuilder();
273 builder.addMemory(0, kV8MaxPages, false); 280 builder.addMemory(0, kV8MaxPages, false);
274 var module = builder.instantiate(); 281 var module = builder.instantiate();
275 var offset; 282 var offset;
276 function peek() { return module.exports.load8(offset); } 283 function peek() { return module.exports.load8(offset); }
277 function poke(value) { return module.exports.store8(offset, value); } 284 function poke(value) { return module.exports.store8(offset, value); }
278 function growMem(pages) { return module.exports.grow_memory(pages); } 285 function growMem(pages) { return module.exports.grow_memory(pages); }
279 286
280 assertTraps(kTrapMemOutOfBounds, peek); 287 assertTraps(kTrapMemOutOfBounds, peek);
281 assertTraps(kTrapMemOutOfBounds, poke); 288 assertTraps(kTrapMemOutOfBounds, poke);
282 289
283 assertEquals(0, growMem(1)); 290 assertEquals(0, growMem(1));
284 291
285 for(offset = 0; offset <= kPageSize - 1; offset++) { 292 for(offset = 0; offset <= kPageSize - 1; offset++) {
286 poke(20); 293 poke(20);
287 assertEquals(20, peek()); 294 assertEquals(20, peek());
288 } 295 }
289 296
290 for(offset = kPageSize; offset <= kPageSize + 5; offset++) { 297 for(offset = kPageSize; offset <= kPageSize + 5; offset++) {
291 assertTraps(kTrapMemOutOfBounds, peek); 298 assertTraps(kTrapMemOutOfBounds, peek);
292 } 299 }
293 } 300 }
294 301
295 testGrowMemoryZeroInitialSize8(); 302 testGrowMemoryZeroInitialSize8();
296 303
297 function testGrowMemoryTrapMaxPagesZeroInitialMemory() { 304 function testGrowMemoryTrapMaxPagesZeroInitialMemory() {
305 print('testGrowMemoryTrapMaxPagesZeroInitialMemory');
298 var builder = genGrowMemoryBuilder(); 306 var builder = genGrowMemoryBuilder();
299 builder.addMemory(0, kV8MaxPages, false); 307 builder.addMemory(0, kV8MaxPages, false);
300 var module = builder.instantiate(); 308 var module = builder.instantiate();
301 var maxPages = 16385; 309 var maxPages = 16385;
302 function growMem(pages) { return module.exports.grow_memory(pages); } 310 function growMem(pages) { return module.exports.grow_memory(pages); }
303 assertEquals(-1, growMem(maxPages)); 311 assertEquals(-1, growMem(maxPages));
304 } 312 }
305 313
306 testGrowMemoryTrapMaxPagesZeroInitialMemory(); 314 testGrowMemoryTrapMaxPagesZeroInitialMemory();
307 315
308 function testGrowMemoryTrapMaxPages() { 316 function testGrowMemoryTrapMaxPages() {
317 print('testGrowMemoryTrapMaxPages');
309 var builder = genGrowMemoryBuilder(); 318 var builder = genGrowMemoryBuilder();
310 builder.addMemory(1, 1, false); 319 builder.addMemory(1, 1, false);
311 var module = builder.instantiate(); 320 var module = builder.instantiate();
312 var maxPages = 16384; 321 var maxPages = 16384;
313 function growMem(pages) { return module.exports.grow_memory(pages); } 322 function growMem(pages) { return module.exports.grow_memory(pages); }
314 assertEquals(-1, growMem(maxPages)); 323 assertEquals(-1, growMem(maxPages));
315 } 324 }
316 325
317 testGrowMemoryTrapMaxPages(); 326 testGrowMemoryTrapMaxPages();
318 327
319 function testGrowMemoryTrapsWithNonSmiInput() { 328 function testGrowMemoryTrapsWithNonSmiInput() {
329 print('testGrowMemoryTrapsWithNonSmiInput');
320 var builder = genGrowMemoryBuilder(); 330 var builder = genGrowMemoryBuilder();
321 builder.addMemory(0, kV8MaxPages, false); 331 builder.addMemory(0, kV8MaxPages, false);
322 var module = builder.instantiate(); 332 var module = builder.instantiate();
323 function growMem(pages) { return module.exports.grow_memory(pages); } 333 function growMem(pages) { return module.exports.grow_memory(pages); }
324 // The parameter of grow_memory is unsigned. Therefore -1 stands for 334 // The parameter of grow_memory is unsigned. Therefore -1 stands for
325 // UINT32_MIN, which cannot be represented as SMI. 335 // UINT32_MIN, which cannot be represented as SMI.
326 assertEquals(-1, growMem(-1)); 336 assertEquals(-1, growMem(-1));
327 }; 337 };
328 338
329 testGrowMemoryTrapsWithNonSmiInput(); 339 testGrowMemoryTrapsWithNonSmiInput();
330 340
331 function testGrowMemoryCurrentMemory() { 341 function testGrowMemoryCurrentMemory() {
342 print('testGrowMemoryCurrentMemory');
332 var builder = genGrowMemoryBuilder(); 343 var builder = genGrowMemoryBuilder();
333 builder.addMemory(1, kV8MaxPages, false); 344 builder.addMemory(1, kV8MaxPages, false);
334 builder.addFunction("memory_size", kSig_i_v) 345 builder.addFunction("memory_size", kSig_i_v)
335 .addBody([kExprMemorySize, kMemoryZero]) 346 .addBody([kExprMemorySize, kMemoryZero])
336 .exportFunc(); 347 .exportFunc();
337 var module = builder.instantiate(); 348 var module = builder.instantiate();
338 function growMem(pages) { return module.exports.grow_memory(pages); } 349 function growMem(pages) { return module.exports.grow_memory(pages); }
339 function MemSize() { return module.exports.memory_size(); } 350 function MemSize() { return module.exports.memory_size(); }
340 assertEquals(1, MemSize()); 351 assertEquals(1, MemSize());
341 assertEquals(1, growMem(1)); 352 assertEquals(1, growMem(1));
342 assertEquals(2, MemSize()); 353 assertEquals(2, MemSize());
343 } 354 }
344 355
345 testGrowMemoryCurrentMemory(); 356 testGrowMemoryCurrentMemory();
346 357
347 function testGrowMemoryPreservesDataMemOp32() { 358 function testGrowMemoryPreservesDataMemOp32() {
359 print('testGrowMemoryPreservesDataMemOp32');
348 var builder = genGrowMemoryBuilder(); 360 var builder = genGrowMemoryBuilder();
349 builder.addMemory(1, kV8MaxPages, false); 361 builder.addMemory(1, kV8MaxPages, false);
350 var module = builder.instantiate(); 362 var module = builder.instantiate();
351 var offset, val; 363 var offset, val;
352 function peek() { return module.exports.load(offset); } 364 function peek() { return module.exports.load(offset); }
353 function poke(value) { return module.exports.store(offset, value); } 365 function poke(value) { return module.exports.store(offset, value); }
354 function growMem(pages) { return module.exports.grow_memory(pages); } 366 function growMem(pages) { return module.exports.grow_memory(pages); }
355 367
356 for(offset = 0; offset <= (kPageSize - 4); offset+=4) { 368 for(offset = 0; offset <= (kPageSize - 4); offset+=4) {
357 poke(100000 - offset); 369 poke(100000 - offset);
358 assertEquals(100000 - offset, peek()); 370 assertEquals(100000 - offset, peek());
359 } 371 }
360 372
361 assertEquals(1, growMem(3)); 373 assertEquals(1, growMem(3));
362 374
363 for(offset = 0; offset <= (kPageSize - 4); offset+=4) { 375 for(offset = 0; offset <= (kPageSize - 4); offset+=4) {
364 assertEquals(100000 - offset, peek()); 376 assertEquals(100000 - offset, peek());
365 } 377 }
366 } 378 }
367 379
368 testGrowMemoryPreservesDataMemOp32(); 380 testGrowMemoryPreservesDataMemOp32();
369 381
370 function testGrowMemoryPreservesDataMemOp16() { 382 function testGrowMemoryPreservesDataMemOp16() {
383 print('testGrowMemoryPreservesDataMemOp16');
371 var builder = genGrowMemoryBuilder(); 384 var builder = genGrowMemoryBuilder();
372 builder.addMemory(1, kV8MaxPages, false); 385 builder.addMemory(1, kV8MaxPages, false);
373 var module = builder.instantiate(); 386 var module = builder.instantiate();
374 var offset, val; 387 var offset, val;
375 function peek() { return module.exports.load16(offset); } 388 function peek() { return module.exports.load16(offset); }
376 function poke(value) { return module.exports.store16(offset, value); } 389 function poke(value) { return module.exports.store16(offset, value); }
377 function growMem(pages) { return module.exports.grow_memory(pages); } 390 function growMem(pages) { return module.exports.grow_memory(pages); }
378 391
379 for(offset = 0; offset <= (kPageSize - 2); offset+=2) { 392 for(offset = 0; offset <= (kPageSize - 2); offset+=2) {
380 poke(65535 - offset); 393 poke(65535 - offset);
381 assertEquals(65535 - offset, peek()); 394 assertEquals(65535 - offset, peek());
382 } 395 }
383 396
384 assertEquals(1, growMem(3)); 397 assertEquals(1, growMem(3));
385 398
386 for(offset = 0; offset <= (kPageSize - 2); offset+=2) { 399 for(offset = 0; offset <= (kPageSize - 2); offset+=2) {
387 assertEquals(65535 - offset, peek()); 400 assertEquals(65535 - offset, peek());
388 } 401 }
389 } 402 }
390 403
391 testGrowMemoryPreservesDataMemOp16(); 404 testGrowMemoryPreservesDataMemOp16();
392 405
393 function testGrowMemoryPreservesDataMemOp8() { 406 function testGrowMemoryPreservesDataMemOp8() {
407 print('testGrowMemoryPreservesDataMemOp8');
394 var builder = genGrowMemoryBuilder(); 408 var builder = genGrowMemoryBuilder();
395 builder.addMemory(1, kV8MaxPages, false); 409 builder.addMemory(1, kV8MaxPages, false);
396 var module = builder.instantiate(); 410 var module = builder.instantiate();
397 var offset, val = 0; 411 var offset, val = 0;
398 function peek() { return module.exports.load8(offset); } 412 function peek() { return module.exports.load8(offset); }
399 function poke(value) { return module.exports.store8(offset, value); } 413 function poke(value) { return module.exports.store8(offset, value); }
400 function growMem(pages) { return module.exports.grow_memory(pages); } 414 function growMem(pages) { return module.exports.grow_memory(pages); }
401 415
402 for(offset = 0; offset <= (kPageSize - 1); offset++, val++) { 416 for(offset = 0; offset <= (kPageSize - 1); offset++, val++) {
403 poke(val); 417 poke(val);
404 assertEquals(val, peek()); 418 assertEquals(val, peek());
405 if (val == 255) val = 0; 419 if (val == 255) val = 0;
406 } 420 }
407 421
408 assertEquals(1, growMem(3)); 422 assertEquals(1, growMem(3));
409 423
410 val = 0; 424 val = 0;
411 425
412 for(offset = 0; offset <= (kPageSize - 1); offset++, val++) { 426 for(offset = 0; offset <= (kPageSize - 1); offset++, val++) {
413 assertEquals(val, peek()); 427 assertEquals(val, peek());
414 if (val == 255) val = 0; 428 if (val == 255) val = 0;
415 } 429 }
416 } 430 }
417 431
418 testGrowMemoryPreservesDataMemOp8(); 432 testGrowMemoryPreservesDataMemOp8();
419 433
420 function testGrowMemoryOutOfBoundsOffset() { 434 function testGrowMemoryOutOfBoundsOffset() {
435 print('testGrowMemoryOutOfBoundsOffset');
421 var builder = genGrowMemoryBuilder(); 436 var builder = genGrowMemoryBuilder();
422 builder.addMemory(1, kV8MaxPages, false); 437 builder.addMemory(1, kV8MaxPages, false);
423 var module = builder.instantiate(); 438 var module = builder.instantiate();
424 var offset, val; 439 var offset, val;
425 function peek() { return module.exports.load(offset); } 440 function peek() { return module.exports.load(offset); }
426 function poke(value) { return module.exports.store(offset, value); } 441 function poke(value) { return module.exports.store(offset, value); }
427 function growMem(pages) { return module.exports.grow_memory(pages); } 442 function growMem(pages) { return module.exports.grow_memory(pages); }
428 443
429 offset = 3*kPageSize + 4; 444 offset = 3*kPageSize + 4;
430 assertTraps(kTrapMemOutOfBounds, poke); 445 assertTraps(kTrapMemOutOfBounds, poke);
(...skipping 12 matching lines...) Expand all
443 } 458 }
444 459
445 for (offset = 4*kPageSize - 3; offset <= 4*kPageSize + 4; offset++) { 460 for (offset = 4*kPageSize - 3; offset <= 4*kPageSize + 4; offset++) {
446 assertTraps(kTrapMemOutOfBounds, poke); 461 assertTraps(kTrapMemOutOfBounds, poke);
447 } 462 }
448 } 463 }
449 464
450 testGrowMemoryOutOfBoundsOffset(); 465 testGrowMemoryOutOfBoundsOffset();
451 466
452 function testGrowMemoryOutOfBoundsOffset2() { 467 function testGrowMemoryOutOfBoundsOffset2() {
468 print('testGrowMemoryOutOfBoundsOffset2');
453 var builder = new WasmModuleBuilder(); 469 var builder = new WasmModuleBuilder();
454 builder.addMemory(16, 128, false); 470 builder.addMemory(16, 128, false);
455 builder.addFunction("main", kSig_v_v) 471 builder.addFunction("main", kSig_v_v)
456 .addBody([ 472 .addBody([
457 kExprI32Const, 20, 473 kExprI32Const, 20,
458 kExprI32Const, 29, 474 kExprI32Const, 29,
459 kExprGrowMemory, kMemoryZero, 475 kExprGrowMemory, kMemoryZero,
460 kExprI32StoreMem, 0, 0xFF, 0xFF, 0xFF, 0x3a 476 kExprI32StoreMem, 0, 0xFF, 0xFF, 0xFF, 0x3a
461 ]) 477 ])
462 .exportAs("main"); 478 .exportAs("main");
463 var module = builder.instantiate(); 479 var module = builder.instantiate();
464 assertTraps(kTrapMemOutOfBounds, module.exports.main); 480 assertTraps(kTrapMemOutOfBounds, module.exports.main);
465 } 481 }
466 482
467 testGrowMemoryOutOfBoundsOffset2(); 483 testGrowMemoryOutOfBoundsOffset2();
468 484
469 function testGrowMemoryDeclaredMaxTraps() { 485 function testGrowMemoryDeclaredMaxTraps() {
486 print('testGrowMemoryDeclaredMaxTraps');
470 var builder = genGrowMemoryBuilder(); 487 var builder = genGrowMemoryBuilder();
471 builder.addMemory(1, 16, false); 488 builder.addMemory(1, 16, false);
472 var module = builder.instantiate(); 489 var module = builder.instantiate();
473 function growMem(pages) { return module.exports.grow_memory(pages); } 490 function growMem(pages) { return module.exports.grow_memory(pages); }
474 assertEquals(1, growMem(5)); 491 assertEquals(1, growMem(5));
475 assertEquals(6, growMem(5)); 492 assertEquals(6, growMem(5));
476 assertEquals(-1, growMem(6)); 493 assertEquals(-1, growMem(6));
477 } 494 }
478 495
479 testGrowMemoryDeclaredMaxTraps(); 496 testGrowMemoryDeclaredMaxTraps();
480 497
481 function testGrowMemoryDeclaredSpecMaxTraps() { 498 function testGrowMemoryDeclaredSpecMaxTraps() {
499 print('testGrowMemoryDeclaredSpecMaxTraps');
482 // The spec maximum is higher than the internal V8 maximum. This test only 500 // The spec maximum is higher than the internal V8 maximum. This test only
483 // checks that grow_memory does not grow past the internally defined maximum 501 // checks that grow_memory does not grow past the internally defined maximum
484 // to reflect the currentl implementation. 502 // to reflect the currentl implementation.
485 var builder = genGrowMemoryBuilder(); 503 var builder = genGrowMemoryBuilder();
486 var kSpecMaxPages = 65535; 504 var kSpecMaxPages = 65535;
487 builder.addMemory(1, kSpecMaxPages, false); 505 builder.addMemory(1, kSpecMaxPages, false);
488 var module = builder.instantiate(); 506 var module = builder.instantiate();
489 function poke(value) { return module.exports.store(offset, value); } 507 function poke(value) { return module.exports.store(offset, value); }
490 function growMem(pages) { return module.exports.grow_memory(pages); } 508 function growMem(pages) { return module.exports.grow_memory(pages); }
491 assertEquals(1, growMem(20)); 509 assertEquals(1, growMem(20));
492 assertEquals(-1, growMem(kV8MaxPages - 20)); 510 assertEquals(-1, growMem(kV8MaxPages - 20));
493 } 511 }
494 512
495 testGrowMemoryDeclaredSpecMaxTraps(); 513 testGrowMemoryDeclaredSpecMaxTraps();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698