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

Unified Diff: test/mjsunit/wasm/default-func-call2.js

Issue 2049513003: [wasm] Support undefined indirect table entries, behind a flag. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 6 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
Index: test/mjsunit/wasm/default-func-call2.js
diff --git a/test/mjsunit/wasm/indirect-calls.js b/test/mjsunit/wasm/default-func-call2.js
similarity index 55%
copy from test/mjsunit/wasm/indirect-calls.js
copy to test/mjsunit/wasm/default-func-call2.js
index 80bee412e028541e3b54ba7a175a512cb8293e77..8863eac6a1ee902a0ce2719e03339ead03faed7e 100644
--- a/test/mjsunit/wasm/indirect-calls.js
+++ b/test/mjsunit/wasm/default-func-call2.js
@@ -3,6 +3,7 @@
// found in the LICENSE file.
// Flags: --expose-wasm
+// Flags: --wasm-jit-prototype
load("test/mjsunit/wasm/wasm-constants.js");
load("test/mjsunit/wasm/wasm-module-builder.js");
@@ -22,6 +23,17 @@ var module = (function () {
kExprGetLocal, 1, // --
kExprI32Sub, // --
]);
+ builder.appendToFunctionTable([0, 1]);
+ var i;
+ for(i = 0; i < 2000; i++){
+ builder.addFunction("sub".concat(i.toString()), sig_index)
+ .addBody([
+ kExprGetLocal, 0, // --
+ kExprGetLocal, 1, // --
+ kExprI32Sub, // --
+ ]);
+ builder.appendToFunctionTable([i + 2]);
+ }
builder.addFunction("main", kSig_i_iii)
.addBody([
kExprGetLocal, 0,
@@ -30,7 +42,8 @@ var module = (function () {
kExprCallIndirect, kArity2, sig_index
])
.exportFunc()
- builder.appendToFunctionTable([0, 1, 2]);
+ builder.appendToFunctionTable([2002]);
+
return builder.instantiate({add: function(a, b) { return a + b | 0; }});
})();
@@ -42,8 +55,12 @@ assertFalse(module === 0);
assertEquals("object", typeof module.exports);
assertEquals("function", typeof module.exports.main);
-assertEquals(5, module.exports.main(1, 12, 7));
-assertEquals(19, module.exports.main(0, 12, 7));
-
-assertTraps(kTrapFuncSigMismatch, "module.exports.main(2, 12, 33)");
-assertTraps(kTrapFuncInvalid, "module.exports.main(3, 12, 33)");
+// Check that the appropriate trap is generated
+assertTraps(kTrapFuncInvalid, "module.exports.main(-1,15,16)");
+assertTraps(kTrapFuncInvalid, "module.exports.main(100000,15,16)");
+assertTraps(kTrapFuncInvalid, "module.exports.main(4006,15,16)");
+assertTraps(kTrapFuncInvalid, "module.exports.main(4007,15,16)");
+assertTraps(kTrapDefaultFuncCall, "module.exports.main(4005,15,16)");
+assertTraps(kTrapDefaultFuncCall, "module.exports.main(2003,15,16)");
+assertTraps(kTrapDefaultFuncCall, "module.exports.main(3000,15,16)");
+assertTraps(kTrapFuncSigMismatch, "module.exports.main(2002,15,16)");

Powered by Google App Engine
This is Rietveld 408576698