Skip to content

Commit

Permalink
capi: Remove arg_size parameter from host function signature
Browse files Browse the repository at this point in the history
  • Loading branch information
gumb0 authored and chfast committed Oct 14, 2020
1 parent fbd1fe3 commit 2a22c03
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 23 deletions.
7 changes: 3 additions & 4 deletions include/fizzy/fizzy.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,10 @@ typedef struct FizzyExecutionResult
///
/// @param context Opaque pointer to execution context.
/// @param instance Pointer to module instance.
/// @param args Pointer to the argument array. Can be NULL iff args_size equals 0.
/// @param args_size Size of the argument array.
/// @param args Pointer to the argument array. Can be NULL iff function has no inputs.
/// @param depth Call stack depth.
typedef FizzyExecutionResult (*FizzyExternalFn)(void* context, FizzyInstance* instance,
const union FizzyValue* args, size_t args_size, int depth);
typedef FizzyExecutionResult (*FizzyExternalFn)(
void* context, FizzyInstance* instance, const union FizzyValue* args, int depth);

/// External function.
typedef struct FizzyExternalFunction
Expand Down
2 changes: 1 addition & 1 deletion lib/fizzy/capi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ inline auto unwrap(FizzyExternalFn func, void* context) noexcept
{
return [func, context](fizzy::Instance& instance, const fizzy::Value* args,
int depth) noexcept -> fizzy::ExecutionResult {
const auto result = func(context, wrap(&instance), wrap(args), 0, depth);
const auto result = func(context, wrap(&instance), wrap(args), depth);
return unwrap(result);
};
}
Expand Down
33 changes: 15 additions & 18 deletions test/unittests/capi_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,10 @@ TEST(capi, instantiate_imported_function)
module = fizzy_parse(wasm.data(), wasm.size());
ASSERT_NE(module, nullptr);

FizzyExternalFunction host_funcs[] = {
{[](void*, FizzyInstance*, const FizzyValue*, size_t, int) {
return FizzyExecutionResult{false, true, {42}};
},
nullptr}};
FizzyExternalFunction host_funcs[] = {{[](void*, FizzyInstance*, const FizzyValue*, int) {
return FizzyExecutionResult{false, true, {42}};
},
nullptr}};

auto instance = fizzy_instantiate(module, host_funcs, 1);
EXPECT_NE(instance, nullptr);
Expand Down Expand Up @@ -210,12 +209,11 @@ TEST(capi, execute_with_host_function)
auto module = fizzy_parse(wasm.data(), wasm.size());
ASSERT_NE(module, nullptr);

FizzyExternalFunction host_funcs[] = {
{[](void*, FizzyInstance*, const FizzyValue*, size_t, int) {
return FizzyExecutionResult{false, true, {42}};
},
nullptr},
{[](void*, FizzyInstance*, const FizzyValue* args, size_t, int) {
FizzyExternalFunction host_funcs[] = {{[](void*, FizzyInstance*, const FizzyValue*, int) {
return FizzyExecutionResult{false, true, {42}};
},
nullptr},
{[](void*, FizzyInstance*, const FizzyValue* args, int) {
return FizzyExecutionResult{false, true, {args[0].i64 / args[1].i64}};
},
nullptr}};
Expand Down Expand Up @@ -244,11 +242,10 @@ TEST(capi, imported_function_traps)
auto module = fizzy_parse(wasm.data(), wasm.size());
ASSERT_NE(module, nullptr);

FizzyExternalFunction host_funcs[] = {
{[](void*, FizzyInstance*, const FizzyValue*, size_t, int) {
return FizzyExecutionResult{true, false, {}};
},
nullptr}};
FizzyExternalFunction host_funcs[] = {{[](void*, FizzyInstance*, const FizzyValue*, int) {
return FizzyExecutionResult{true, false, {}};
},
nullptr}};

auto instance = fizzy_instantiate(module, host_funcs, 1);
ASSERT_NE(instance, nullptr);
Expand All @@ -273,7 +270,7 @@ TEST(capi, imported_function_void)

bool called = false;
FizzyExternalFunction host_funcs[] = {
{[](void* context, FizzyInstance*, const FizzyValue*, size_t, int) {
{[](void* context, FizzyInstance*, const FizzyValue*, int) {
*static_cast<bool*>(context) = true;
return FizzyExecutionResult{false, false, {}};
},
Expand Down Expand Up @@ -328,7 +325,7 @@ TEST(capi, imported_function_from_another_module)

auto host_context = std::make_pair(instance1, func_idx);

auto sub = [](void* context, FizzyInstance*, const FizzyValue* args, size_t,
auto sub = [](void* context, FizzyInstance*, const FizzyValue* args,
int depth) -> FizzyExecutionResult {
const auto* instance_and_func_idx =
static_cast<std::pair<FizzyInstance*, uint32_t>*>(context);
Expand Down

0 comments on commit 2a22c03

Please sign in to comment.