[wasm-c-api] Add serialization test
Change-Id: I871659626b41a15723f92150f6f076d356313136 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1691028 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#62639}
This commit is contained in:
parent
c6817489e2
commit
c69c743166
@ -35,6 +35,7 @@ v8_executable("wasm_api_tests") {
|
||||
"memory.cc",
|
||||
"reflect.cc",
|
||||
"run-all-wasm-api-tests.cc",
|
||||
"serialize.cc",
|
||||
"wasm-api-test.h",
|
||||
]
|
||||
}
|
||||
|
48
test/wasm-api-tests/serialize.cc
Normal file
48
test/wasm-api-tests/serialize.cc
Normal file
@ -0,0 +1,48 @@
|
||||
// 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 {
|
||||
|
||||
namespace {
|
||||
|
||||
bool g_callback_called;
|
||||
|
||||
own<Trap*> Callback(const Val args[], Val results[]) {
|
||||
g_callback_called = true;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST_F(WasmCapiTest, Serialize) {
|
||||
FunctionSig sig(0, 0, nullptr);
|
||||
uint32_t callback_index = builder()->AddImport(CStrVector("callback"), &sig);
|
||||
byte code[] = {WASM_CALL_FUNCTION0(callback_index)};
|
||||
AddExportedFunction(CStrVector("run"), code, sizeof(code), &sig);
|
||||
Compile();
|
||||
|
||||
vec<byte_t> serialized = module()->serialize();
|
||||
own<Module*> deserialized = Module::deserialize(store(), serialized);
|
||||
|
||||
own<FuncType*> callback_type =
|
||||
FuncType::make(vec<ValType*>::make(), vec<ValType*>::make());
|
||||
own<Func*> callback = Func::make(store(), callback_type.get(), Callback);
|
||||
Extern* imports[] = {callback.get()};
|
||||
|
||||
own<Instance*> instance =
|
||||
Instance::make(store(), deserialized.get(), imports);
|
||||
vec<Extern*> exports = instance->exports();
|
||||
Func* run = exports[0]->func();
|
||||
g_callback_called = false;
|
||||
run->call();
|
||||
EXPECT_TRUE(g_callback_called);
|
||||
}
|
||||
|
||||
} // namespace wasm
|
||||
} // namespace internal
|
||||
} // namespace v8
|
Loading…
Reference in New Issue
Block a user