Chromium Code Reviews| Index: test/mjsunit/wasm/indirect-calls.js |
| diff --git a/test/mjsunit/wasm/indirect-calls.js b/test/mjsunit/wasm/indirect-calls.js |
| index 1e87c6f8230fd862b49acfeddbe0bcfe491285d0..26021bb74d69a7d4a5ad12feac7ef5dc3d1c8eea 100644 |
| --- a/test/mjsunit/wasm/indirect-calls.js |
| +++ b/test/mjsunit/wasm/indirect-calls.js |
| @@ -14,7 +14,7 @@ var module = (function () { |
| builder.addImport("add", sig_index); |
| builder.addFunction("add", sig_index) |
| .addBody([ |
| - kExprGetLocal, 0, kExprGetLocal, 1, kExprCallImport, kArity2, 0 |
| + kExprGetLocal, 0, kExprGetLocal, 1, kExprCallFunction, 0 |
| ]); |
| builder.addFunction("sub", sig_index) |
| .addBody([ |
| @@ -24,13 +24,13 @@ var module = (function () { |
| ]); |
| builder.addFunction("main", kSig_i_iii) |
| .addBody([ |
| - kExprGetLocal, 0, |
| kExprGetLocal, 1, |
| kExprGetLocal, 2, |
| - kExprCallIndirect, kArity2, sig_index |
| + kExprGetLocal, 0, |
| + kExprCallIndirect, sig_index |
| ]) |
| .exportFunc() |
| - builder.appendToTable([0, 1, 2]); |
| + builder.appendToTable([1, 2, 3]); |
| return builder.instantiate({add: function(a, b) { return a + b | 0; }}); |
| })(); |
| @@ -47,3 +47,40 @@ assertEquals(19, module.exports.main(0, 12, 7)); |
| assertTraps(kTrapFuncSigMismatch, "module.exports.main(2, 12, 33)"); |
| assertTraps(kTrapFuncInvalid, "module.exports.main(3, 12, 33)"); |
| + |
| + |
|
bradnelson
2016/09/23 11:36:01
Little odd to redef the module like this?
Maybe wr
titzer
2016/09/23 12:07:31
Meh, scopes won't help in JS. I could wrap in an a
bradn
2016/09/23 15:18:43
I meant a function to get scope (sorry 4 am), but
|
| +module = (function () { |
| + var builder = new WasmModuleBuilder(); |
| + |
| + var sig_i_ii = builder.addType(kSig_i_ii); |
| + var sig_i_i = builder.addType(kSig_i_i); |
| + builder.addImport("mul", sig_i_ii); |
| + builder.addFunction("add", sig_i_ii) |
| + .addBody([ |
| + kExprGetLocal, 0, // -- |
| + kExprGetLocal, 1, // -- |
| + kExprI32Add // -- |
| + ]); |
| + builder.addFunction("popcnt", sig_i_i) |
| + .addBody([ |
| + kExprGetLocal, 0, // -- |
| + kExprI32Popcnt // -- |
| + ]); |
| + builder.addFunction("main", kSig_i_iii) |
| + .addBody([ |
| + kExprGetLocal, 1, |
| + kExprGetLocal, 2, |
| + kExprGetLocal, 0, |
| + kExprCallIndirect, sig_i_ii |
| + ]) |
| + .exportFunc() |
| + builder.appendToTable([0, 1, 2, 3]); |
| + |
| + return builder.instantiate({mul: function(a, b) { return a * b | 0; }}); |
| +})(); |
| + |
| +assertEquals(-6, module.exports.main(0, -2, 3)); |
| +assertEquals(99, module.exports.main(1, 22, 77)); |
| +assertTraps(kTrapFuncSigMismatch, "module.exports.main(2, 12, 33)"); |
| +assertTraps(kTrapFuncSigMismatch, "module.exports.main(3, 12, 33)"); |
| +assertTraps(kTrapFuncInvalid, "module.exports.main(4, 12, 33)"); |