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

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

Issue 2637643002: [wasm] Table.Grow should grow dispatch tables (Closed)
Patch Set: Rebase + review 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/wasm/indirect-tables.js ('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 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 490 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 assertEq(set.call(tbl1, 0, null), undefined); 501 assertEq(set.call(tbl1, 0, null), undefined);
502 assertEq(set.call(tbl1, 1, null), undefined); 502 assertEq(set.call(tbl1, 1, null), undefined);
503 503
504 // 'WebAssembly.Table.prototype.grow' data property 504 // 'WebAssembly.Table.prototype.grow' data property
505 let tblGrowDesc = Object.getOwnPropertyDescriptor(tableProto, 'grow'); 505 let tblGrowDesc = Object.getOwnPropertyDescriptor(tableProto, 'grow');
506 assertEq(typeof tblGrowDesc.value, "function"); 506 assertEq(typeof tblGrowDesc.value, "function");
507 assertEq(tblGrowDesc.enumerable, false); 507 assertEq(tblGrowDesc.enumerable, false);
508 assertEq(tblGrowDesc.configurable, true); 508 assertEq(tblGrowDesc.configurable, true);
509 509
510 // 'WebAssembly.Table.prototype.grow' method 510 // 'WebAssembly.Table.prototype.grow' method
511 if (false) { // TODO: Table.grow
512 let tblGrow = tblGrowDesc.value; 511 let tblGrow = tblGrowDesc.value;
513 assertEq(tblGrow.length, 1); 512 assertEq(tblGrow.length, 1);
514 assertErrorMessage(() => tblGrow.call(), TypeError, /called on incompatible unde fined/); 513 assertErrorMessage(() => tblGrow.call(), TypeError, /called on incompatible unde fined/);
515 assertErrorMessage(() => tblGrow.call({}), TypeError, /called on incompatible Ob ject/); 514 assertErrorMessage(() => tblGrow.call({}), TypeError, /called on incompatible Ob ject/);
516 assertErrorMessage(() => tblGrow.call(tbl1, -1), RangeError, /bad Table grow del ta/); 515 assertErrorMessage(() => tblGrow.call(tbl1, -1), RangeError, /bad Table grow del ta/);
517 assertErrorMessage(() => tblGrow.call(tbl1, Math.pow(2,32)), RangeError, /bad Ta ble grow delta/); 516 assertErrorMessage(() => tblGrow.call(tbl1, Math.pow(2,32)), RangeError, /bad Ta ble grow delta/);
518 var tbl = new Table({element:"anyfunc", initial:1, maximum:2}); 517 var tbl = new Table({element:"anyfunc", initial:1, maximum:2});
519 assertEq(tbl.length, 1); 518 assertEq(tbl.length, 1);
520 assertEq(tbl.grow(0), 1); 519 assertEq(tbl.grow(0), 1);
521 assertEq(tbl.length, 1); 520 assertEq(tbl.length, 1);
522 assertEq(tbl.grow(1), 1); 521 assertEq(tbl.grow(1), 1);
523 assertEq(tbl.length, 2); 522 assertEq(tbl.length, 2);
524 assertErrorMessage(() => tbl.grow(1), Error, /failed to grow table/); 523 assertErrorMessage(() => tbl.grow(1), Error, /failed to grow table/);
525 }
526 524
527 // 'WebAssembly.validate' function 525 // 'WebAssembly.validate' function
528 assertErrorMessage(() => WebAssembly.validate(), TypeError); 526 assertErrorMessage(() => WebAssembly.validate(), TypeError);
529 assertErrorMessage(() => WebAssembly.validate("hi"), TypeError); 527 assertErrorMessage(() => WebAssembly.validate("hi"), TypeError);
530 assertEq(WebAssembly.validate(emptyModuleBinary), true); 528 assertEq(WebAssembly.validate(emptyModuleBinary), true);
531 // TODO: other ways for validate to return false. 529 // TODO: other ways for validate to return false.
532 assertEq(WebAssembly.validate(moduleBinaryImporting2Memories), false); 530 assertEq(WebAssembly.validate(moduleBinaryImporting2Memories), false);
533 assertEq(WebAssembly.validate(moduleBinaryWithMemSectionAndMemImport), false); 531 assertEq(WebAssembly.validate(moduleBinaryWithMemSectionAndMemImport), false);
534 532
535 // 'WebAssembly.compile' data property 533 // 'WebAssembly.compile' data property
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
628 var result = null; 626 var result = null;
629 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e)); 627 instantiate(module_bytes, imports).then(r => result = r).catch(e => print(e));
630 drainJobQueue(); 628 drainJobQueue();
631 assertEq(result instanceof Instance, true); 629 assertEq(result instanceof Instance, true);
632 } 630 }
633 assertInstantiateSuccess(emptyModuleBinary); 631 assertInstantiateSuccess(emptyModuleBinary);
634 assertInstantiateSuccess(emptyModuleBinary.buffer); 632 assertInstantiateSuccess(emptyModuleBinary.buffer);
635 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}}); 633 assertInstantiateSuccess(importingModuleBinary, {"":{f:()=>{}}});
636 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}}); 634 assertInstantiateSuccess(importingModuleBinary.buffer, {"":{f:()=>{}}});
637 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch _memory}}); 635 assertInstantiateSuccess(memoryImportingModuleBinary, {"": {"my_memory": scratch _memory}});
OLDNEW
« no previous file with comments | « test/mjsunit/wasm/indirect-tables.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698