diff options
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/runtime.go')
| -rw-r--r-- | vendor/github.com/tetratelabs/wazero/runtime.go | 27 |
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 { |
