summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/wasm/multi-value.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/multi-value.js')
-rw-r--r--deps/v8/test/mjsunit/wasm/multi-value.js31
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]);
+})();