From 6f1215cae2ca4c3200acd504b0925c95f7401d2f Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Wed, 6 Mar 2024 15:41:31 +0900 Subject: [PATCH] wazevo: handle empty host module Signed-off-by: Takeshi Yoneda --- builder_test.go | 4 +++- internal/engine/wazevo/engine.go | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/builder_test.go b/builder_test.go index 2e80fe48ba..dc13221dd6 100644 --- a/builder_test.go +++ b/builder_test.go @@ -308,7 +308,9 @@ func TestNewHostModuleBuilder_Compile(t *testing.T) { tc := tt t.Run(tc.name, func(t *testing.T) { - b := tc.input(NewRuntime(testCtx)).(*hostModuleBuilder) + cfg := NewRuntimeConfig() + cfg.(*runtimeConfig).EnableOptimizingCompiler() + b := tc.input(NewRuntimeWithConfig(testCtx, cfg)).(*hostModuleBuilder) compiled, err := b.Compile(testCtx) require.NoError(t, err) m := compiled.(*compiledModule) diff --git a/internal/engine/wazevo/engine.go b/internal/engine/wazevo/engine.go index d654c3ab16..e898ae33d2 100644 --- a/internal/engine/wazevo/engine.go +++ b/internal/engine/wazevo/engine.go @@ -437,6 +437,11 @@ func (e *engine) compileHostModule(ctx context.Context, module *wasm.Module, lis totalSize += len(body) } + if totalSize == 0 { + // Empty module. + return cm, nil + } + // Allocate executable memory and then copy the generated machine code. executable, err := platform.MmapCodeSegment(totalSize) if err != nil {