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

Side by Side Diff: test/mjsunit/wasm/js-api.js

Issue 2638243002: [wasm] WebAssembly.Memory.grow() should handle the no instance case (Closed)
Patch Set: Created 3 years, 11 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/mjsunit/regress/wasm/regression-680938.js ('k') | test/mjsunit/wasm/memory.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 --allow-natives-syntax 5 // Flags: --expose-wasm --allow-natives-syntax
6 6
7 if ((typeof drainJobQueue) != "function") { 7 if ((typeof drainJobQueue) != "function") {
8 drainJobQueue = () => { %RunMicrotasks() }; 8 drainJobQueue = () => { %RunMicrotasks() };
9 } 9 }
10 10
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
366 assertEq(bufferGetter.call(mem1).byteLength, kPageSize); 366 assertEq(bufferGetter.call(mem1).byteLength, kPageSize);
367 367
368 // 'WebAssembly.Memory.prototype.grow' data property 368 // 'WebAssembly.Memory.prototype.grow' data property
369 let memGrowDesc = Object.getOwnPropertyDescriptor(memoryProto, 'grow'); 369 let memGrowDesc = Object.getOwnPropertyDescriptor(memoryProto, 'grow');
370 assertEq(typeof memGrowDesc.value, "function"); 370 assertEq(typeof memGrowDesc.value, "function");
371 assertEq(memGrowDesc.enumerable, false); 371 assertEq(memGrowDesc.enumerable, false);
372 assertEq(memGrowDesc.configurable, true); 372 assertEq(memGrowDesc.configurable, true);
373 373
374 // 'WebAssembly.Memory.prototype.grow' method 374 // 'WebAssembly.Memory.prototype.grow' method
375 375
376 if (false) { // TODO: bugs with Memory.grow
377 let memGrow = memGrowDesc.value; 376 let memGrow = memGrowDesc.value;
378 assertEq(memGrow.length, 1); 377 assertEq(memGrow.length, 1);
379 assertErrorMessage(() => memGrow.call(), TypeError, /called on incompatible unde fined/); 378 assertErrorMessage(() => memGrow.call(), TypeError,
380 assertErrorMessage(() => memGrow.call({}), TypeError, /called on incompatible Ob ject/); 379 /called on incompatible undefined/);
381 assertErrorMessage(() => memGrow.call(mem1, -1), RangeError, /bad Memory grow de lta/); 380 assertErrorMessage(() => memGrow.call({}), TypeError,
382 assertErrorMessage(() => memGrow.call(mem1, Math.pow(2,32)), RangeError, /bad Me mory grow delta/); 381 /called on incompatible Object/);
382 assertErrorMessage(() => memGrow.call(mem1, -1), RangeError,
383 /bad Memory grow delta/);
384 assertErrorMessage(() => memGrow.call(mem1, Math.pow(2,32)), RangeError,
385 /bad Memory grow delta/);
383 var mem = new Memory({initial:1, maximum:2}); 386 var mem = new Memory({initial:1, maximum:2});
384 var buf = mem.buffer; 387 var buf = mem.buffer;
385 assertEq(buf.byteLength, kPageSize); 388 assertEq(buf.byteLength, kPageSize);
386 assertEq(mem.grow(0), 1); 389 assertEq(mem.grow(0), 1);
387 assertEq(buf !== mem.buffer, true); 390 // TODO(gdeepti): assertEq(buf !== mem.buffer, true);
bradnelson 2017/01/18 02:35:37 Maybe say pending spec clarification (ideally ref
gdeepti 2017/01/18 04:43:14 Done.
388 assertEq(buf.byteLength, 0); 391 // TODO(gdeepti): assertEq(buf.byteLength, 0);
389 buf = mem.buffer; 392 buf = mem.buffer;
390 assertEq(buf.byteLength, kPageSize); 393 assertEq(buf.byteLength, kPageSize);
391 assertEq(mem.grow(1), 1); 394 assertEq(mem.grow(1), 1);
392 assertEq(buf !== mem.buffer, true); 395 // TODO(gdeepti): assertEq(buf !== mem.buffer, true);
393 assertEq(buf.byteLength, 0); 396 // TODO(gdeepti): assertEq(buf.byteLength, 0);
gdeepti 2017/01/18 02:17:47 Disabled for now because for the 0 case, we do not
394 buf = mem.buffer; 397 buf = mem.buffer;
395 assertEq(buf.byteLength, 2 * kPageSize); 398 assertEq(buf.byteLength, 2 * kPageSize);
396 assertErrorMessage(() => mem.grow(1), Error, /failed to grow memory/); 399 assertErrorMessage(() => mem.grow(1), Error, /failed to grow memory/);
397 assertEq(buf, mem.buffer); 400 assertEq(buf, mem.buffer);
398 }
399 401
400 // 'WebAssembly.Table' data property 402 // 'WebAssembly.Table' data property
401 let tableDesc = Object.getOwnPropertyDescriptor(WebAssembly, 'Table'); 403 let tableDesc = Object.getOwnPropertyDescriptor(WebAssembly, 'Table');
402 assertEq(typeof tableDesc.value, "function"); 404 assertEq(typeof tableDesc.value, "function");
403 assertEq(tableDesc.writable, true); 405 assertEq(tableDesc.writable, true);
404 assertEq(tableDesc.enumerable, false); 406 assertEq(tableDesc.enumerable, false);
405 assertEq(tableDesc.configurable, true); 407 assertEq(tableDesc.configurable, true);
406 408
407 // 'WebAssembly.Table' constructor function 409 // 'WebAssembly.Table' constructor function
408 let Table = WebAssembly.Table; 410 let Table = WebAssembly.Table;
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 var result = null; 624 var result = null;
623 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e)); 625 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e));
624 drainJobQueue(); 626 drainJobQueue();
625 assertEq(result instanceof Instance, true); 627 assertEq(result instanceof Instance, true);
626 } 628 }
627 assertInstantiateSuccess(emptyModuleBinary); 629 assertInstantiateSuccess(emptyModuleBinary);
628 assertInstantiateSuccess(emptyModuleBinary.buffer); 630 assertInstantiateSuccess(emptyModuleBinary.buffer);
629 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); 631 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}});
630 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); 632 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}});
631 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch _memory}}); 633 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch _memory}});
OLDNEW
« no previous file with comments | « test/mjsunit/regress/wasm/regression-680938.js ('k') | test/mjsunit/wasm/memory.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698