summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/runtime.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/runtime.go')
-rw-r--r--vendor/github.com/tetratelabs/wazero/runtime.go27
1 files changed, 23 insertions, 4 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/runtime.go b/vendor/github.com/tetratelabs/wazero/runtime.go
index 34742289e..7072f3f68 100644
--- a/vendor/github.com/tetratelabs/wazero/runtime.go
+++ b/vendor/github.com/tetratelabs/wazero/runtime.go
@@ -7,7 +7,10 @@ import (
"github.com/tetratelabs/wazero/api"
experimentalapi "github.com/tetratelabs/wazero/experimental"
+ "github.com/tetratelabs/wazero/internal/engine/interpreter"
+ "github.com/tetratelabs/wazero/internal/engine/wazevo"
"github.com/tetratelabs/wazero/internal/expctxkeys"
+ "github.com/tetratelabs/wazero/internal/platform"
internalsock "github.com/tetratelabs/wazero/internal/sock"
internalsys "github.com/tetratelabs/wazero/internal/sys"
"github.com/tetratelabs/wazero/internal/wasm"
@@ -148,15 +151,31 @@ func NewRuntime(ctx context.Context) Runtime {
// NewRuntimeWithConfig returns a runtime with the given configuration.
func NewRuntimeWithConfig(ctx context.Context, rConfig RuntimeConfig) Runtime {
config := rConfig.(*runtimeConfig)
+ configKind := config.engineKind
+ configEngine := config.newEngine
+ if configKind == engineKindAuto {
+ if platform.CompilerSupports(config.enabledFeatures) {
+ configKind = engineKindCompiler
+ } else {
+ configKind = engineKindInterpreter
+ }
+ }
+ if configEngine == nil {
+ if configKind == engineKindCompiler {
+ configEngine = wazevo.NewEngine
+ } else {
+ configEngine = interpreter.NewEngine
+ }
+ }
var engine wasm.Engine
var cacheImpl *cache
if c := config.cache; c != nil {
// If the Cache is configured, we share the engine.
cacheImpl = c.(*cache)
- engine = cacheImpl.initEngine(config.engineKind, config.newEngine, ctx, config.enabledFeatures)
+ engine = cacheImpl.initEngine(configKind, configEngine, ctx, config.enabledFeatures)
} else {
// Otherwise, we create a new engine.
- engine = config.newEngine(ctx, config.enabledFeatures, nil)
+ engine = configEngine(ctx, config.enabledFeatures, nil)
}
store := wasm.NewStore(config.enabledFeatures, engine)
return &runtime{
@@ -306,7 +325,7 @@ func (r *runtime) InstantiateModule(
var sysCtx *internalsys.Context
if sysCtx, err = config.toSysContext(); err != nil {
- return
+ return nil, err
}
name := config.name
@@ -321,7 +340,7 @@ func (r *runtime) InstantiateModule(
if code.closeWithModule {
_ = code.Close(ctx) // don't overwrite the error
}
- return
+ return nil, err
}
if closeNotifier, ok := ctx.Value(expctxkeys.CloseNotifierKey{}).(experimentalapi.CloseNotifier); ok {