diff options
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend')
-rw-r--r-- | vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go | 21 | ||||
-rw-r--r-- | vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go | 12 |
2 files changed, 3 insertions, 30 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go index 873a35a55..42cc21dcd 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/frontend.go @@ -301,26 +301,7 @@ func (c *Compiler) declareWasmLocals(entry ssa.BasicBlock) { st := WasmTypeToSSAType(typ) variable := c.ssaBuilder.DeclareVariable(st) c.setWasmLocalVariable(wasm.Index(i)+localCount, variable) - - zeroInst := c.ssaBuilder.AllocateInstruction() - switch st { - case ssa.TypeI32: - zeroInst.AsIconst32(0) - case ssa.TypeI64: - zeroInst.AsIconst64(0) - case ssa.TypeF32: - zeroInst.AsF32const(0) - case ssa.TypeF64: - zeroInst.AsF64const(0) - case ssa.TypeV128: - zeroInst.AsVconst(0, 0) - default: - panic("TODO: " + wasm.ValueTypeName(typ)) - } - - c.ssaBuilder.InsertInstruction(zeroInst) - value := zeroInst.Return() - c.ssaBuilder.DefineVariable(variable, value, entry) + c.ssaBuilder.InsertZeroValue(st) } } diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go index 5096a6365..ff963e605 100644 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go +++ b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/frontend/lower.go @@ -1086,16 +1086,8 @@ func (c *Compiler) lowerCurrentOpcode() { break } variable := c.localVariable(index) - if _, ok := c.m.NonStaticLocals[c.wasmLocalFunctionIndex][index]; ok { - state.push(builder.MustFindValue(variable)) - } else { - // If a local is static, we can simply find it in the entry block which is either a function param - // or a zero value. This fast pass helps to avoid the overhead of searching the entire function plus - // avoid adding unnecessary block arguments. - // TODO: I think this optimization should be done in a SSA pass like passRedundantPhiEliminationOpt, - // but somehow there's some corner cases that it fails to optimize. - state.push(builder.MustFindValueInBlk(variable, c.ssaBuilder.EntryBlock())) - } + state.push(builder.MustFindValue(variable)) + case wasm.OpcodeLocalSet: index := c.readI32u() if state.unreachable { |