diff --git a/include/fizzy/fizzy.h b/include/fizzy/fizzy.h index 1d611cead..698746bdf 100644 --- a/include/fizzy/fizzy.h +++ b/include/fizzy/fizzy.h @@ -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 diff --git a/lib/fizzy/capi.cpp b/lib/fizzy/capi.cpp index 05fae6598..395b10a39 100644 --- a/lib/fizzy/capi.cpp +++ b/lib/fizzy/capi.cpp @@ -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); }; } diff --git a/test/unittests/capi_test.cpp b/test/unittests/capi_test.cpp index ef1f051b3..5c7e06084 100644 --- a/test/unittests/capi_test.cpp +++ b/test/unittests/capi_test.cpp @@ -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); @@ -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}}; @@ -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); @@ -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(context) = true; return FizzyExecutionResult{false, false, {}}; }, @@ -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*>(context);