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

Unified Diff: test/mjsunit/wasm/indirect-tables.js

Issue 2456193006: Revert of [wasm] Support for restricted table imports. (Closed)
Patch Set: Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/cctest/wasm/wasm-run-utils.h ('k') | test/mjsunit/wasm/wasm-module-builder.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/wasm/indirect-tables.js
diff --git a/test/mjsunit/wasm/indirect-tables.js b/test/mjsunit/wasm/indirect-tables.js
index 62b900586ce942d2c09899709d055332db2783b3..cdb489cb83514b48c57a4d6e189c2ba0dc852622 100644
--- a/test/mjsunit/wasm/indirect-tables.js
+++ b/test/mjsunit/wasm/indirect-tables.js
@@ -30,8 +30,6 @@
return {mul: mul, add: add, sub: sub};
}
-function js_div(a, b) { return (a / b) | 0; }
-
(function ExportedTableTest() {
print("ExportedTableTest...");
@@ -57,6 +55,8 @@
builder.addExportOfKind("table", kExternalTable, 0);
let module = new WebAssembly.Module(builder.toBuffer());
+
+ function js_div(a, b) { return (a / b) | 0; }
for (let i = 0; i < 5; i++) {
print(" base = " + i);
@@ -100,278 +100,3 @@
assertEquals(-44, exp_div(-88.1, 2));
}
})();
-
-
-(function ImportedTableTest() {
- let kTableSize = 10;
- print("ImportedTableTest...");
- var builder = new WasmModuleBuilder();
-
- let d = builder.addImport("js_div", kSig_i_ii);
- let f = AddFunctions(builder);
- builder.setFunctionTableLength(kTableSize);
- let g = builder.addImportedGlobal("base", undefined, kAstI32);
- builder.addFunctionTableInit(g, true, [f.mul.index, f.add.index,
- f.sub.index,
- d]);
- builder.addExportOfKind("table", kExternalTable, 0);
-
- let m1 = new WebAssembly.Module(builder.toBuffer());
-
- var builder = new WasmModuleBuilder();
-
- builder.addImportedTable("table", undefined, kTableSize, kTableSize);
- builder.addFunction("main", kSig_i_ii)
- .addBody([
- kExprI32Const, 33, // --
- kExprGetLocal, 0, // --
- kExprGetLocal, 1, // --
- kExprCallIndirect, 0, kTableZero]) // --
- .exportAs("main");
-
- let m2 = new WebAssembly.Module(builder.toBuffer());
-
- // Run 5 trials at different table bases.
- for (let i = 0; i < 5; i++) {
- print(" base = " + i);
- let i1 = new WebAssembly.Instance(m1, {base: i, js_div: js_div});
- let table = i1.exports.table;
- assertEquals(10, table.length);
- let i2 = new WebAssembly.Instance(m2, {table: table});
- let main = i2.exports.main;
-
- for (var j = 0; j < i; j++) {
- assertThrows(() => main(0, j));
- assertSame(null, table.get(j));
- }
-
- // mul
- assertEquals("function", typeof table.get(i+0));
- assertEquals(0, main(0, i+0));
- assertEquals(66, main(2, i+0));
-
- // add
- assertEquals("function", typeof table.get(i+1));
- assertEquals(33, main(0, i+1));
- assertEquals(38, main(5, i+1));
-
- // sub
- assertEquals("function", typeof table.get(i+2));
- assertEquals(32, main(1, i+2));
- assertEquals(28, main(5, i+2));
-
- // div
- assertEquals("function", typeof table.get(i+3));
- assertEquals(8, main(4, i+3));
- assertEquals(3, main(11, i+3));
-
- for (var j = i + 4; j < (kTableSize + 5); j++) {
- assertThrows(x => main(0, j));
- if (j < kTableSize) assertSame(null, table.get(j));
- }
- }
-})();
-
-(function ImportedTableTest() {
- let kTableSize = 10;
- print("ManualTableTest...");
-
- var builder = new WasmModuleBuilder();
-
- let d = builder.addImport("js_div", kSig_i_ii);
- builder.addImportedTable("table", undefined, kTableSize, kTableSize);
- let g = builder.addImportedGlobal("base", undefined, kAstI32);
- let f = AddFunctions(builder);
- builder.addFunctionTableInit(g, true, [f.mul.index, f.add.index,
- f.sub.index,
- d]);
- builder.addFunction("main", kSig_i_ii)
- .addBody([
- kExprI32Const, 55, // --
- kExprGetLocal, 0, // --
- kExprGetLocal, 1, // --
- kExprCallIndirect, 0, kTableZero]) // --
- .exportAs("main");
-
- let m2 = new WebAssembly.Module(builder.toBuffer());
-
- // Run 5 trials at different table bases.
- for (let i = 0; i < 5; i++) {
- print(" base = " + i);
- let table = new WebAssembly.Table({element: "anyfunc",
- initial: kTableSize});
- assertEquals(10, table.length);
- let i2 = new WebAssembly.Instance(m2, {base: i, table: table,
- js_div: js_div});
- let main = i2.exports.main;
-
- for (var j = 0; j < i; j++) {
- assertThrows(() => main(0, j));
- assertSame(null, table.get(j));
- }
-
- // mul
- assertEquals("function", typeof table.get(i+0));
- assertEquals(0, main(0, i+0));
- assertEquals(110, main(2, i+0));
-
- // add
- assertEquals("function", typeof table.get(i+1));
- assertEquals(55, main(0, i+1));
- assertEquals(60, main(5, i+1));
-
- // sub
- assertEquals("function", typeof table.get(i+2));
- assertEquals(54, main(1, i+2));
- assertEquals(50, main(5, i+2));
-
- // div
- assertEquals("function", typeof table.get(i+3));
- assertEquals(13, main(4, i+3));
- assertEquals(5, main(11, i+3));
-
- for (var j = i + 4; j < (kTableSize + 5); j++) {
- assertThrows(x => main(0, j));
- if (j < kTableSize) assertSame(null, table.get(j));
- }
- }
-})();
-
-
-(function CumulativeTest() {
- print("CumulativeTest...");
-
- let kTableSize = 10;
- let table = new WebAssembly.Table({element: "anyfunc", initial: 10});
-
- var builder = new WasmModuleBuilder();
-
- builder.addImportedTable("table", undefined, kTableSize, kTableSize);
- let g = builder.addImportedGlobal("base", undefined, kAstI32);
- let sig_index = builder.addType(kSig_i_v);
- builder.addFunction("g", sig_index)
- .addBody([
- kExprGetGlobal, g
- ]);
- builder.addFunction("main", kSig_i_ii)
- .addBody([
- kExprGetLocal, 0,
- kExprCallIndirect, sig_index, kTableZero]) // --
- .exportAs("main");
- builder.addFunctionTableInit(g, true, [g]);
-
- let module = new WebAssembly.Module(builder.toBuffer());
-
- for (var i = 0; i < kTableSize; i++) {
- print(" base = " + i);
- let instance = new WebAssembly.Instance(module, {base: i, table: table});
-
- for (var j = 0; j < kTableSize; j++) {
- let func = table.get(j);
- if (j > i) {
- assertSame(null, func);
- assertTraps(kTrapFuncSigMismatch, () => instance.exports.main(j));
- } else {
- assertEquals("function", typeof func);
- assertEquals(j, func());
- assertEquals(j, instance.exports.main(j));
- }
- }
- }
-})();
-
-(function TwoWayTest() {
- print("TwoWayTest...");
- let kTableSize = 3;
-
- // Module {m1} defines the table and exports it.
- var builder = new WasmModuleBuilder();
- builder.addType(kSig_i_i);
- builder.addType(kSig_i_ii);
- var sig_index1 = builder.addType(kSig_i_v);
- var f1 = builder.addFunction("f1", sig_index1)
- .addBody([kExprI32Const, 11]);
-
- builder.addFunction("main", kSig_i_ii)
- .addBody([
- kExprGetLocal, 0, // --
- kExprCallIndirect, sig_index1, kTableZero]) // --
- .exportAs("main");
-
- builder.setFunctionTableLength(kTableSize);
- builder.addFunctionTableInit(0, false, [f1.index]);
- builder.addExportOfKind("table", kExternalTable, 0);
-
- var m1 = new WebAssembly.Module(builder.toBuffer());
-
- // Module {m2} imports the table and adds {f2}.
- var builder = new WasmModuleBuilder();
- builder.addType(kSig_i_ii);
- var sig_index2 = builder.addType(kSig_i_v);
- var f2 = builder.addFunction("f2", sig_index2)
- .addBody([kExprI32Const, 22]);
-
- builder.addFunction("main", kSig_i_ii)
- .addBody([
- kExprGetLocal, 0, // --
- kExprCallIndirect, sig_index2, kTableZero]) // --
- .exportAs("main");
-
- builder.setFunctionTableLength(kTableSize);
- builder.addFunctionTableInit(1, false, [f2.index]);
- builder.addImportedTable("table", undefined, kTableSize, kTableSize);
-
- var m2 = new WebAssembly.Module(builder.toBuffer());
-
- assertFalse(sig_index1 == sig_index2);
-
- var i1 = new WebAssembly.Instance(m1);
- var i2 = new WebAssembly.Instance(m2, {table: i1.exports.table});
-
- assertEquals(11, i1.exports.main(0));
- assertEquals(11, i2.exports.main(0));
-
- assertEquals(22, i1.exports.main(1));
- assertEquals(22, i2.exports.main(1));
-
- assertThrows(() => i1.exports.main(2));
- assertThrows(() => i2.exports.main(2));
- assertThrows(() => i1.exports.main(3));
- assertThrows(() => i2.exports.main(3));
-
-})();
-
-(function MismatchedTableSize() {
- print("MismatchedTableSize...");
- let kTableSize = 5;
-
- for (var expsize = 1; expsize < 4; expsize++) {
- for (var impsize = 1; impsize < 4; impsize++) {
- print(" expsize = " + expsize + ", impsize = " + impsize);
- var builder = new WasmModuleBuilder();
- builder.setFunctionTableLength(expsize);
- builder.addExportOfKind("expfoo", kExternalTable, 0);
-
- let m1 = new WebAssembly.Module(builder.toBuffer());
-
- var builder = new WasmModuleBuilder();
- builder.addImportedTable("impfoo", undefined, impsize, impsize);
-
- let m2 = new WebAssembly.Module(builder.toBuffer());
-
- var i1 = new WebAssembly.Instance(m1);
-
- // TODO(titzer): v8 currently requires import table size to match
- // export table size.
- var ffi = {impfoo: i1.exports.expfoo};
- if (expsize == impsize) {
- var i2 = new WebAssembly.Instance(m2, ffi);
- } else {
- assertThrows(() => new WebAssembly.Instance(m2, ffi));
- }
- }
- }
-
-
-
-})();
« no previous file with comments | « test/cctest/wasm/wasm-run-utils.h ('k') | test/mjsunit/wasm/wasm-module-builder.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698