diff options
author | Myles Borins <mylesborins@google.com> | 2019-09-24 11:56:38 -0400 |
---|---|---|
committer | Myles Borins <myles.borins@gmail.com> | 2019-10-07 03:19:23 -0400 |
commit | f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2 (patch) | |
tree | f5edbccb3ffda2573d70a6e291e7157f290e0ae0 /deps/v8/test/wasm-api-tests/multi-return.cc | |
parent | ffd22e81983056d09c064c59343a0e488236272d (diff) | |
download | android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.tar.gz android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.tar.bz2 android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.zip |
deps: update V8 to 7.8.279.9
PR-URL: https://github.com/nodejs/node/pull/29694
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Diffstat (limited to 'deps/v8/test/wasm-api-tests/multi-return.cc')
-rw-r--r-- | deps/v8/test/wasm-api-tests/multi-return.cc | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/deps/v8/test/wasm-api-tests/multi-return.cc b/deps/v8/test/wasm-api-tests/multi-return.cc new file mode 100644 index 0000000000..2cd624d053 --- /dev/null +++ b/deps/v8/test/wasm-api-tests/multi-return.cc @@ -0,0 +1,58 @@ +// Copyright 2019 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "test/wasm-api-tests/wasm-api-test.h" + +namespace v8 { +namespace internal { +namespace wasm { + +using ::wasm::I32; +using ::wasm::I64; + +namespace { + +own<Trap> Callback(const Val args[], Val results[]) { + results[0] = args[3].copy(); + results[1] = args[1].copy(); + results[2] = args[2].copy(); + results[3] = args[0].copy(); + return nullptr; +} + +} // namespace + +TEST_F(WasmCapiTest, MultiReturn) { + ValueType reps[] = {kWasmI32, kWasmI64, kWasmI64, kWasmI32, + kWasmI32, kWasmI64, kWasmI64, kWasmI32}; + FunctionSig sig(4, 4, reps); + uint32_t func_index = builder()->AddImport(CStrVector("f"), &sig); + byte code[] = {WASM_CALL_FUNCTION(func_index, WASM_GET_LOCAL(0), + WASM_GET_LOCAL(2), WASM_GET_LOCAL(1), + WASM_GET_LOCAL(3))}; + AddExportedFunction(CStrVector("g"), code, sizeof(code), &sig); + + ownvec<ValType> types = + ownvec<ValType>::make(ValType::make(I32), ValType::make(I64), + ValType::make(I64), ValType::make(I32)); + own<FuncType> func_type = + FuncType::make(types.deep_copy(), types.deep_copy()); + own<Func> callback = Func::make(store(), func_type.get(), Callback); + Extern* imports[] = {callback.get()}; + Instantiate(imports); + + Func* run_func = GetExportedFunction(0); + Val args[] = {Val::i32(1), Val::i64(2), Val::i64(3), Val::i32(4)}; + Val results[4]; + own<Trap> trap = run_func->call(args, results); + EXPECT_EQ(nullptr, trap); + EXPECT_EQ(4, results[0].i32()); + EXPECT_EQ(3, results[1].i64()); + EXPECT_EQ(2, results[2].i64()); + EXPECT_EQ(1, results[3].i32()); +} + +} // namespace wasm +} // namespace internal +} // namespace v8 |