diff options
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/multi-value.js')
-rw-r--r-- | deps/v8/test/mjsunit/wasm/multi-value.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/wasm/multi-value.js b/deps/v8/test/mjsunit/wasm/multi-value.js index 1948801958..31f9e8149b 100644 --- a/deps/v8/test/mjsunit/wasm/multi-value.js +++ b/deps/v8/test/mjsunit/wasm/multi-value.js @@ -319,3 +319,34 @@ load("test/mjsunit/wasm/wasm-module-builder.js"); assertEquals(instance.exports.main(2), 8); assertEquals(instance.exports.main(10), 200); })(); + +(function MultiJSReturnTest() { + print(arguments.callee.name); + let builder = new WasmModuleBuilder(); + let sig_fi_if = makeSig([kWasmI32, kWasmF32], [kWasmF32, kWasmI32]); + + builder.addFunction("swap", sig_fi_if) + .addBody([ + kExprGetLocal, 1, + kExprGetLocal, 0]) + .exportAs("swap"); + builder.addFunction("addsubmul", kSig_iii_i) + .addBody([ + kExprGetLocal, 0, + kExprGetLocal, 0, + kExprI32Add, + kExprGetLocal, 0, + kExprGetLocal, 0, + kExprI32Sub, + kExprGetLocal, 0, + kExprGetLocal, 0, + kExprI32Mul]) + .exportAs("addsubmul"); + + let module = new WebAssembly.Module(builder.toBuffer()); + let instance = new WebAssembly.Instance(module); + assertEquals(instance.exports.swap(0, 1.5), [1.5, 0]); + assertEquals(instance.exports.swap(2, 3.75), [3.75, 2]); + assertEquals(instance.exports.addsubmul(4), [8, 0, 16]); + assertEquals(instance.exports.addsubmul(5), [10, 0, 25]); +})(); |