summaryrefslogtreecommitdiff
path: root/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi')
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/debug_options.go196
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go109
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go216
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap.go96
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_disabled.go5
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_enabled.go5
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/pool.go215
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/ptr.go15
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go26
-rw-r--r--vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/resetmap.go11
10 files changed, 0 insertions, 894 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/debug_options.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/debug_options.go
deleted file mode 100644
index 2db61e219..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/debug_options.go
+++ /dev/null
@@ -1,196 +0,0 @@
-package wazevoapi
-
-import (
- "context"
- "encoding/hex"
- "fmt"
- "math/rand"
- "os"
- "time"
-)
-
-// These consts are used various places in the wazevo implementations.
-// Instead of defining them in each file, we define them here so that we can quickly iterate on
-// debugging without spending "where do we have debug logging?" time.
-
-// ----- Debug logging -----
-// These consts must be disabled by default. Enable them only when debugging.
-
-const (
- FrontEndLoggingEnabled = false
- SSALoggingEnabled = false
- RegAllocLoggingEnabled = false
-)
-
-// ----- Output prints -----
-// These consts must be disabled by default. Enable them only when debugging.
-
-const (
- PrintSSA = false
- PrintOptimizedSSA = false
- PrintSSAToBackendIRLowering = false
- PrintRegisterAllocated = false
- PrintFinalizedMachineCode = false
- PrintMachineCodeHexPerFunction = printMachineCodeHexPerFunctionUnmodified || PrintMachineCodeHexPerFunctionDisassemblable //nolint
- printMachineCodeHexPerFunctionUnmodified = false
- // PrintMachineCodeHexPerFunctionDisassemblable prints the machine code while modifying the actual result
- // to make it disassemblable. This is useful when debugging the final machine code. See the places where this is used for detail.
- // When this is enabled, functions must not be called.
- PrintMachineCodeHexPerFunctionDisassemblable = false
-)
-
-// printTarget is the function index to print the machine code. This is used for debugging to print the machine code
-// of a specific function.
-const printTarget = -1
-
-// PrintEnabledIndex returns true if the current function index is the print target.
-func PrintEnabledIndex(ctx context.Context) bool {
- if printTarget == -1 {
- return true
- }
- return GetCurrentFunctionIndex(ctx) == printTarget
-}
-
-// ----- Validations -----
-const (
- // SSAValidationEnabled enables the SSA validation. This is disabled by default since the operation is expensive.
- SSAValidationEnabled = false
-)
-
-// ----- Stack Guard Check -----
-const (
- // StackGuardCheckEnabled enables the stack guard check to ensure that our stack bounds check works correctly.
- StackGuardCheckEnabled = false
- StackGuardCheckGuardPageSize = 8096
-)
-
-// CheckStackGuardPage checks the given stack guard page is not corrupted.
-func CheckStackGuardPage(s []byte) {
- for i := 0; i < StackGuardCheckGuardPageSize; i++ {
- if s[i] != 0 {
- panic(
- fmt.Sprintf("BUG: stack guard page is corrupted:\n\tguard_page=%s\n\tstack=%s",
- hex.EncodeToString(s[:StackGuardCheckGuardPageSize]),
- hex.EncodeToString(s[StackGuardCheckGuardPageSize:]),
- ))
- }
- }
-}
-
-// ----- Deterministic compilation verifier -----
-
-const (
- // DeterministicCompilationVerifierEnabled enables the deterministic compilation verifier. This is disabled by default
- // since the operation is expensive. But when in doubt, enable this to make sure the compilation is deterministic.
- DeterministicCompilationVerifierEnabled = false
- DeterministicCompilationVerifyingIter = 5
-)
-
-type (
- verifierState struct {
- initialCompilationDone bool
- maybeRandomizedIndexes []int
- r *rand.Rand
- values map[string]string
- }
- verifierStateContextKey struct{}
- currentFunctionNameKey struct{}
- currentFunctionIndexKey struct{}
-)
-
-// NewDeterministicCompilationVerifierContext creates a new context with the deterministic compilation verifier used per wasm.Module.
-func NewDeterministicCompilationVerifierContext(ctx context.Context, localFunctions int) context.Context {
- maybeRandomizedIndexes := make([]int, localFunctions)
- for i := range maybeRandomizedIndexes {
- maybeRandomizedIndexes[i] = i
- }
- r := rand.New(rand.NewSource(time.Now().UnixNano()))
- return context.WithValue(ctx, verifierStateContextKey{}, &verifierState{
- r: r, maybeRandomizedIndexes: maybeRandomizedIndexes, values: map[string]string{},
- })
-}
-
-// DeterministicCompilationVerifierRandomizeIndexes randomizes the indexes for the deterministic compilation verifier.
-// To get the randomized index, use DeterministicCompilationVerifierGetRandomizedLocalFunctionIndex.
-func DeterministicCompilationVerifierRandomizeIndexes(ctx context.Context) {
- state := ctx.Value(verifierStateContextKey{}).(*verifierState)
- if !state.initialCompilationDone {
- // If this is the first attempt, we use the index as-is order.
- state.initialCompilationDone = true
- return
- }
- r := state.r
- r.Shuffle(len(state.maybeRandomizedIndexes), func(i, j int) {
- state.maybeRandomizedIndexes[i], state.maybeRandomizedIndexes[j] = state.maybeRandomizedIndexes[j], state.maybeRandomizedIndexes[i]
- })
-}
-
-// DeterministicCompilationVerifierGetRandomizedLocalFunctionIndex returns the randomized index for the given `index`
-// which is assigned by DeterministicCompilationVerifierRandomizeIndexes.
-func DeterministicCompilationVerifierGetRandomizedLocalFunctionIndex(ctx context.Context, index int) int {
- state := ctx.Value(verifierStateContextKey{}).(*verifierState)
- ret := state.maybeRandomizedIndexes[index]
- return ret
-}
-
-// VerifyOrSetDeterministicCompilationContextValue verifies that the `newValue` is the same as the previous value for the given `scope`
-// and the current function name. If the previous value doesn't exist, it sets the value to the given `newValue`.
-//
-// If the verification fails, this prints the diff and exits the process.
-func VerifyOrSetDeterministicCompilationContextValue(ctx context.Context, scope string, newValue string) {
- fn := ctx.Value(currentFunctionNameKey{}).(string)
- key := fn + ": " + scope
- verifierCtx := ctx.Value(verifierStateContextKey{}).(*verifierState)
- oldValue, ok := verifierCtx.values[key]
- if !ok {
- verifierCtx.values[key] = newValue
- return
- }
- if oldValue != newValue {
- fmt.Printf(
- `BUG: Deterministic compilation failed for function%s at scope="%s".
-
-This is mostly due to (but might not be limited to):
- * Resetting ssa.Builder, backend.Compiler or frontend.Compiler, etc doens't work as expected, and the compilation has been affected by the previous iterations.
- * Using a map with non-deterministic iteration order.
-
----------- [old] ----------
-%s
-
----------- [new] ----------
-%s
-`,
- fn, scope, oldValue, newValue,
- )
- os.Exit(1)
- }
-}
-
-// nolint
-const NeedFunctionNameInContext = PrintSSA ||
- PrintOptimizedSSA ||
- PrintSSAToBackendIRLowering ||
- PrintRegisterAllocated ||
- PrintFinalizedMachineCode ||
- PrintMachineCodeHexPerFunction ||
- DeterministicCompilationVerifierEnabled ||
- PerfMapEnabled
-
-// SetCurrentFunctionName sets the current function name to the given `functionName`.
-func SetCurrentFunctionName(ctx context.Context, index int, functionName string) context.Context {
- ctx = context.WithValue(ctx, currentFunctionNameKey{}, functionName)
- ctx = context.WithValue(ctx, currentFunctionIndexKey{}, index)
- return ctx
-}
-
-// GetCurrentFunctionName returns the current function name.
-func GetCurrentFunctionName(ctx context.Context) string {
- ret, _ := ctx.Value(currentFunctionNameKey{}).(string)
- return ret
-}
-
-// GetCurrentFunctionIndex returns the current function index.
-func GetCurrentFunctionIndex(ctx context.Context) int {
- ret, _ := ctx.Value(currentFunctionIndexKey{}).(int)
- return ret
-}
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go
deleted file mode 100644
index 5ad594982..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/exitcode.go
+++ /dev/null
@@ -1,109 +0,0 @@
-package wazevoapi
-
-// ExitCode is an exit code of an execution of a function.
-type ExitCode uint32
-
-const (
- ExitCodeOK ExitCode = iota
- ExitCodeGrowStack
- ExitCodeGrowMemory
- ExitCodeUnreachable
- ExitCodeMemoryOutOfBounds
- // ExitCodeCallGoModuleFunction is an exit code for a call to an api.GoModuleFunction.
- ExitCodeCallGoModuleFunction
- // ExitCodeCallGoFunction is an exit code for a call to an api.GoFunction.
- ExitCodeCallGoFunction
- ExitCodeTableOutOfBounds
- ExitCodeIndirectCallNullPointer
- ExitCodeIndirectCallTypeMismatch
- ExitCodeIntegerDivisionByZero
- ExitCodeIntegerOverflow
- ExitCodeInvalidConversionToInteger
- ExitCodeCheckModuleExitCode
- ExitCodeCallListenerBefore
- ExitCodeCallListenerAfter
- ExitCodeCallGoModuleFunctionWithListener
- ExitCodeCallGoFunctionWithListener
- ExitCodeTableGrow
- ExitCodeRefFunc
- ExitCodeMemoryWait32
- ExitCodeMemoryWait64
- ExitCodeMemoryNotify
- ExitCodeUnalignedAtomic
- exitCodeMax
-)
-
-const ExitCodeMask = 0xff
-
-// String implements fmt.Stringer.
-func (e ExitCode) String() string {
- switch e {
- case ExitCodeOK:
- return "ok"
- case ExitCodeGrowStack:
- return "grow_stack"
- case ExitCodeCallGoModuleFunction:
- return "call_go_module_function"
- case ExitCodeCallGoFunction:
- return "call_go_function"
- case ExitCodeUnreachable:
- return "unreachable"
- case ExitCodeMemoryOutOfBounds:
- return "memory_out_of_bounds"
- case ExitCodeUnalignedAtomic:
- return "unaligned_atomic"
- case ExitCodeTableOutOfBounds:
- return "table_out_of_bounds"
- case ExitCodeIndirectCallNullPointer:
- return "indirect_call_null_pointer"
- case ExitCodeIndirectCallTypeMismatch:
- return "indirect_call_type_mismatch"
- case ExitCodeIntegerDivisionByZero:
- return "integer_division_by_zero"
- case ExitCodeIntegerOverflow:
- return "integer_overflow"
- case ExitCodeInvalidConversionToInteger:
- return "invalid_conversion_to_integer"
- case ExitCodeCheckModuleExitCode:
- return "check_module_exit_code"
- case ExitCodeCallListenerBefore:
- return "call_listener_before"
- case ExitCodeCallListenerAfter:
- return "call_listener_after"
- case ExitCodeCallGoModuleFunctionWithListener:
- return "call_go_module_function_with_listener"
- case ExitCodeCallGoFunctionWithListener:
- return "call_go_function_with_listener"
- case ExitCodeGrowMemory:
- return "grow_memory"
- case ExitCodeTableGrow:
- return "table_grow"
- case ExitCodeRefFunc:
- return "ref_func"
- case ExitCodeMemoryWait32:
- return "memory_wait32"
- case ExitCodeMemoryWait64:
- return "memory_wait64"
- case ExitCodeMemoryNotify:
- return "memory_notify"
- }
- panic("TODO")
-}
-
-func ExitCodeCallGoModuleFunctionWithIndex(index int, withListener bool) ExitCode {
- if withListener {
- return ExitCodeCallGoModuleFunctionWithListener | ExitCode(index<<8)
- }
- return ExitCodeCallGoModuleFunction | ExitCode(index<<8)
-}
-
-func ExitCodeCallGoFunctionWithIndex(index int, withListener bool) ExitCode {
- if withListener {
- return ExitCodeCallGoFunctionWithListener | ExitCode(index<<8)
- }
- return ExitCodeCallGoFunction | ExitCode(index<<8)
-}
-
-func GoFunctionIndexFromExitCode(exitCode ExitCode) int {
- return int(exitCode >> 8)
-}
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go
deleted file mode 100644
index fe6161b04..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go
+++ /dev/null
@@ -1,216 +0,0 @@
-package wazevoapi
-
-import (
- "github.com/tetratelabs/wazero/internal/wasm"
-)
-
-const (
- // FunctionInstanceSize is the size of wazevo.functionInstance.
- FunctionInstanceSize = 24
- // FunctionInstanceExecutableOffset is an offset of `executable` field in wazevo.functionInstance
- FunctionInstanceExecutableOffset = 0
- // FunctionInstanceModuleContextOpaquePtrOffset is an offset of `moduleContextOpaquePtr` field in wazevo.functionInstance
- FunctionInstanceModuleContextOpaquePtrOffset = 8
- // FunctionInstanceTypeIDOffset is an offset of `typeID` field in wazevo.functionInstance
- FunctionInstanceTypeIDOffset = 16
-)
-
-const (
- // ExecutionContextOffsetExitCodeOffset is an offset of `exitCode` field in wazevo.executionContext
- ExecutionContextOffsetExitCodeOffset Offset = 0
- // ExecutionContextOffsetCallerModuleContextPtr is an offset of `callerModuleContextPtr` field in wazevo.executionContext
- ExecutionContextOffsetCallerModuleContextPtr Offset = 8
- // ExecutionContextOffsetOriginalFramePointer is an offset of `originalFramePointer` field in wazevo.executionContext
- ExecutionContextOffsetOriginalFramePointer Offset = 16
- // ExecutionContextOffsetOriginalStackPointer is an offset of `originalStackPointer` field in wazevo.executionContext
- ExecutionContextOffsetOriginalStackPointer Offset = 24
- // ExecutionContextOffsetGoReturnAddress is an offset of `goReturnAddress` field in wazevo.executionContext
- ExecutionContextOffsetGoReturnAddress Offset = 32
- // ExecutionContextOffsetStackBottomPtr is an offset of `stackBottomPtr` field in wazevo.executionContext
- ExecutionContextOffsetStackBottomPtr Offset = 40
- // ExecutionContextOffsetGoCallReturnAddress is an offset of `goCallReturnAddress` field in wazevo.executionContext
- ExecutionContextOffsetGoCallReturnAddress Offset = 48
- // ExecutionContextOffsetStackPointerBeforeGoCall is an offset of `StackPointerBeforeGoCall` field in wazevo.executionContext
- ExecutionContextOffsetStackPointerBeforeGoCall Offset = 56
- // ExecutionContextOffsetStackGrowRequiredSize is an offset of `stackGrowRequiredSize` field in wazevo.executionContext
- ExecutionContextOffsetStackGrowRequiredSize Offset = 64
- // ExecutionContextOffsetMemoryGrowTrampolineAddress is an offset of `memoryGrowTrampolineAddress` field in wazevo.executionContext
- ExecutionContextOffsetMemoryGrowTrampolineAddress Offset = 72
- // ExecutionContextOffsetStackGrowCallTrampolineAddress is an offset of `stackGrowCallTrampolineAddress` field in wazevo.executionContext.
- ExecutionContextOffsetStackGrowCallTrampolineAddress Offset = 80
- // ExecutionContextOffsetCheckModuleExitCodeTrampolineAddress is an offset of `checkModuleExitCodeTrampolineAddress` field in wazevo.executionContext.
- ExecutionContextOffsetCheckModuleExitCodeTrampolineAddress Offset = 88
- // ExecutionContextOffsetSavedRegistersBegin is an offset of the first element of `savedRegisters` field in wazevo.executionContext
- ExecutionContextOffsetSavedRegistersBegin Offset = 96
- // ExecutionContextOffsetGoFunctionCallCalleeModuleContextOpaque is an offset of `goFunctionCallCalleeModuleContextOpaque` field in wazevo.executionContext
- ExecutionContextOffsetGoFunctionCallCalleeModuleContextOpaque Offset = 1120
- // ExecutionContextOffsetTableGrowTrampolineAddress is an offset of `tableGrowTrampolineAddress` field in wazevo.executionContext
- ExecutionContextOffsetTableGrowTrampolineAddress Offset = 1128
- // ExecutionContextOffsetRefFuncTrampolineAddress is an offset of `refFuncTrampolineAddress` field in wazevo.executionContext
- ExecutionContextOffsetRefFuncTrampolineAddress Offset = 1136
- ExecutionContextOffsetMemmoveAddress Offset = 1144
- ExecutionContextOffsetFramePointerBeforeGoCall Offset = 1152
- ExecutionContextOffsetMemoryWait32TrampolineAddress Offset = 1160
- ExecutionContextOffsetMemoryWait64TrampolineAddress Offset = 1168
- ExecutionContextOffsetMemoryNotifyTrampolineAddress Offset = 1176
-)
-
-// ModuleContextOffsetData allows the compilers to get the information about offsets to the fields of wazevo.moduleContextOpaque,
-// This is unique per module.
-type ModuleContextOffsetData struct {
- TotalSize int
- ModuleInstanceOffset,
- LocalMemoryBegin,
- ImportedMemoryBegin,
- ImportedFunctionsBegin,
- GlobalsBegin,
- TypeIDs1stElement,
- TablesBegin,
- BeforeListenerTrampolines1stElement,
- AfterListenerTrampolines1stElement,
- DataInstances1stElement,
- ElementInstances1stElement Offset
-}
-
-// ImportedFunctionOffset returns an offset of the i-th imported function.
-// Each item is stored as wazevo.functionInstance whose size matches FunctionInstanceSize.
-func (m *ModuleContextOffsetData) ImportedFunctionOffset(i wasm.Index) (
- executableOffset, moduleCtxOffset, typeIDOffset Offset,
-) {
- base := m.ImportedFunctionsBegin + Offset(i)*FunctionInstanceSize
- return base, base + 8, base + 16
-}
-
-// GlobalInstanceOffset returns an offset of the i-th global instance.
-func (m *ModuleContextOffsetData) GlobalInstanceOffset(i wasm.Index) Offset {
- return m.GlobalsBegin + Offset(i)*16
-}
-
-// Offset represents an offset of a field of a struct.
-type Offset int32
-
-// U32 encodes an Offset as uint32 for convenience.
-func (o Offset) U32() uint32 {
- return uint32(o)
-}
-
-// I64 encodes an Offset as int64 for convenience.
-func (o Offset) I64() int64 {
- return int64(o)
-}
-
-// U64 encodes an Offset as int64 for convenience.
-func (o Offset) U64() uint64 {
- return uint64(o)
-}
-
-// LocalMemoryBase returns an offset of the first byte of the local memory.
-func (m *ModuleContextOffsetData) LocalMemoryBase() Offset {
- return m.LocalMemoryBegin
-}
-
-// LocalMemoryLen returns an offset of the length of the local memory buffer.
-func (m *ModuleContextOffsetData) LocalMemoryLen() Offset {
- if l := m.LocalMemoryBegin; l >= 0 {
- return l + 8
- }
- return -1
-}
-
-// TableOffset returns an offset of the i-th table instance.
-func (m *ModuleContextOffsetData) TableOffset(tableIndex int) Offset {
- return m.TablesBegin + Offset(tableIndex)*8
-}
-
-// NewModuleContextOffsetData creates a ModuleContextOffsetData determining the structure of moduleContextOpaque for the given Module.
-// The structure is described in the comment of wazevo.moduleContextOpaque.
-func NewModuleContextOffsetData(m *wasm.Module, withListener bool) ModuleContextOffsetData {
- ret := ModuleContextOffsetData{}
- var offset Offset
-
- ret.ModuleInstanceOffset = 0
- offset += 8
-
- if m.MemorySection != nil {
- ret.LocalMemoryBegin = offset
- // buffer base + memory size.
- const localMemorySizeInOpaqueModuleContext = 16
- offset += localMemorySizeInOpaqueModuleContext
- } else {
- // Indicates that there's no local memory
- ret.LocalMemoryBegin = -1
- }
-
- if m.ImportMemoryCount > 0 {
- offset = align8(offset)
- // *wasm.MemoryInstance + imported memory's owner (moduleContextOpaque)
- const importedMemorySizeInOpaqueModuleContext = 16
- ret.ImportedMemoryBegin = offset
- offset += importedMemorySizeInOpaqueModuleContext
- } else {
- // Indicates that there's no imported memory
- ret.ImportedMemoryBegin = -1
- }
-
- if m.ImportFunctionCount > 0 {
- offset = align8(offset)
- ret.ImportedFunctionsBegin = offset
- // Each function is stored wazevo.functionInstance.
- size := int(m.ImportFunctionCount) * FunctionInstanceSize
- offset += Offset(size)
- } else {
- ret.ImportedFunctionsBegin = -1
- }
-
- if globals := int(m.ImportGlobalCount) + len(m.GlobalSection); globals > 0 {
- // Align to 16 bytes for globals, as f32/f64/v128 might be loaded via SIMD instructions.
- offset = align16(offset)
- ret.GlobalsBegin = offset
- // Pointers to *wasm.GlobalInstance.
- offset += Offset(globals) * 16
- } else {
- ret.GlobalsBegin = -1
- }
-
- if tables := len(m.TableSection) + int(m.ImportTableCount); tables > 0 {
- offset = align8(offset)
- ret.TypeIDs1stElement = offset
- offset += 8 // First element of TypeIDs.
-
- ret.TablesBegin = offset
- // Pointers to *wasm.TableInstance.
- offset += Offset(tables) * 8
- } else {
- ret.TypeIDs1stElement = -1
- ret.TablesBegin = -1
- }
-
- if withListener {
- offset = align8(offset)
- ret.BeforeListenerTrampolines1stElement = offset
- offset += 8 // First element of BeforeListenerTrampolines.
-
- ret.AfterListenerTrampolines1stElement = offset
- offset += 8 // First element of AfterListenerTrampolines.
- } else {
- ret.BeforeListenerTrampolines1stElement = -1
- ret.AfterListenerTrampolines1stElement = -1
- }
-
- ret.DataInstances1stElement = offset
- offset += 8 // First element of DataInstances.
-
- ret.ElementInstances1stElement = offset
- offset += 8 // First element of ElementInstances.
-
- ret.TotalSize = int(align16(offset))
- return ret
-}
-
-func align16(o Offset) Offset {
- return (o + 15) &^ 15
-}
-
-func align8(o Offset) Offset {
- return (o + 7) &^ 7
-}
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap.go
deleted file mode 100644
index 642c7f75d..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package wazevoapi
-
-import (
- "fmt"
- "os"
- "strconv"
- "sync"
-)
-
-var PerfMap *Perfmap
-
-func init() {
- if PerfMapEnabled {
- pid := os.Getpid()
- filename := "/tmp/perf-" + strconv.Itoa(pid) + ".map"
-
- fh, err := os.OpenFile(filename, os.O_APPEND|os.O_RDWR|os.O_CREATE, 0o644)
- if err != nil {
- panic(err)
- }
-
- PerfMap = &Perfmap{fh: fh}
- }
-}
-
-// Perfmap holds perfmap entries to be flushed into a perfmap file.
-type Perfmap struct {
- entries []entry
- mux sync.Mutex
- fh *os.File
-}
-
-type entry struct {
- index int
- offset int64
- size uint64
- name string
-}
-
-func (f *Perfmap) Lock() {
- f.mux.Lock()
-}
-
-func (f *Perfmap) Unlock() {
- f.mux.Unlock()
-}
-
-// AddModuleEntry adds a perfmap entry into the perfmap file.
-// index is the index of the function in the module, offset is the offset of the function in the module,
-// size is the size of the function, and name is the name of the function.
-//
-// Note that the entries are not flushed into the perfmap file until Flush is called,
-// and the entries are module-scoped; Perfmap must be locked until Flush is called.
-func (f *Perfmap) AddModuleEntry(index int, offset int64, size uint64, name string) {
- e := entry{index: index, offset: offset, size: size, name: name}
- if f.entries == nil {
- f.entries = []entry{e}
- return
- }
- f.entries = append(f.entries, e)
-}
-
-// Flush writes the perfmap entries into the perfmap file where the entries are adjusted by the given `addr` and `functionOffsets`.
-func (f *Perfmap) Flush(addr uintptr, functionOffsets []int) {
- defer func() {
- _ = f.fh.Sync()
- }()
-
- for _, e := range f.entries {
- if _, err := f.fh.WriteString(fmt.Sprintf("%x %s %s\n",
- uintptr(e.offset)+addr+uintptr(functionOffsets[e.index]),
- strconv.FormatUint(e.size, 16),
- e.name,
- )); err != nil {
- panic(err)
- }
- }
- f.entries = f.entries[:0]
-}
-
-// Clear clears the perfmap entries not yet flushed.
-func (f *Perfmap) Clear() {
- f.entries = f.entries[:0]
-}
-
-// AddEntry writes a perfmap entry directly into the perfmap file, not using the entries.
-func (f *Perfmap) AddEntry(addr uintptr, size uint64, name string) {
- _, err := f.fh.WriteString(fmt.Sprintf("%x %s %s\n",
- addr,
- strconv.FormatUint(size, 16),
- name,
- ))
- if err != nil {
- panic(err)
- }
-}
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_disabled.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_disabled.go
deleted file mode 100644
index bcc4e545c..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_disabled.go
+++ /dev/null
@@ -1,5 +0,0 @@
-//go:build !perfmap
-
-package wazevoapi
-
-const PerfMapEnabled = false
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_enabled.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_enabled.go
deleted file mode 100644
index 2a39879ec..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/perfmap_enabled.go
+++ /dev/null
@@ -1,5 +0,0 @@
-//go:build perfmap
-
-package wazevoapi
-
-const PerfMapEnabled = true
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/pool.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/pool.go
deleted file mode 100644
index 313e34f9a..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/pool.go
+++ /dev/null
@@ -1,215 +0,0 @@
-package wazevoapi
-
-const poolPageSize = 128
-
-// Pool is a pool of T that can be allocated and reset.
-// This is useful to avoid unnecessary allocations.
-type Pool[T any] struct {
- pages []*[poolPageSize]T
- resetFn func(*T)
- allocated, index int
-}
-
-// NewPool returns a new Pool.
-// resetFn is called when a new T is allocated in Pool.Allocate.
-func NewPool[T any](resetFn func(*T)) Pool[T] {
- var ret Pool[T]
- ret.resetFn = resetFn
- ret.Reset()
- return ret
-}
-
-// Allocated returns the number of allocated T currently in the pool.
-func (p *Pool[T]) Allocated() int {
- return p.allocated
-}
-
-// Allocate allocates a new T from the pool.
-func (p *Pool[T]) Allocate() *T {
- if p.index == poolPageSize {
- if len(p.pages) == cap(p.pages) {
- p.pages = append(p.pages, new([poolPageSize]T))
- } else {
- i := len(p.pages)
- p.pages = p.pages[:i+1]
- if p.pages[i] == nil {
- p.pages[i] = new([poolPageSize]T)
- }
- }
- p.index = 0
- }
- ret := &p.pages[len(p.pages)-1][p.index]
- if p.resetFn != nil {
- p.resetFn(ret)
- }
- p.index++
- p.allocated++
- return ret
-}
-
-// View returns the pointer to i-th item from the pool.
-func (p *Pool[T]) View(i int) *T {
- page, index := i/poolPageSize, i%poolPageSize
- return &p.pages[page][index]
-}
-
-// Reset resets the pool.
-func (p *Pool[T]) Reset() {
- p.pages = p.pages[:0]
- p.index = poolPageSize
- p.allocated = 0
-}
-
-// IDedPool is a pool of T that can be allocated and reset, with a way to get T by an ID.
-type IDedPool[T any] struct {
- pool Pool[T]
- idToItems []*T
- maxIDEncountered int
-}
-
-// NewIDedPool returns a new IDedPool.
-func NewIDedPool[T any](resetFn func(*T)) IDedPool[T] {
- return IDedPool[T]{pool: NewPool[T](resetFn), maxIDEncountered: -1}
-}
-
-// GetOrAllocate returns the T with the given id.
-func (p *IDedPool[T]) GetOrAllocate(id int) *T {
- if p.maxIDEncountered < id {
- p.maxIDEncountered = id
- }
- if id >= len(p.idToItems) {
- p.idToItems = append(p.idToItems, make([]*T, id-len(p.idToItems)+1)...)
- }
- if p.idToItems[id] == nil {
- p.idToItems[id] = p.pool.Allocate()
- }
- return p.idToItems[id]
-}
-
-// Get returns the T with the given id, or nil if it's not allocated.
-func (p *IDedPool[T]) Get(id int) *T {
- if id >= len(p.idToItems) {
- return nil
- }
- return p.idToItems[id]
-}
-
-// Reset resets the pool.
-func (p *IDedPool[T]) Reset() {
- p.pool.Reset()
- for i := 0; i <= p.maxIDEncountered; i++ {
- p.idToItems[i] = nil
- }
- p.maxIDEncountered = -1
-}
-
-// MaxIDEncountered returns the maximum id encountered so far.
-func (p *IDedPool[T]) MaxIDEncountered() int {
- return p.maxIDEncountered
-}
-
-// arraySize is the size of the array used in VarLengthPool's arrayPool.
-// This is chosen to be 8, which is empirically a good number among 8, 12, 16 and 20.
-const arraySize = 8
-
-// VarLengthPool is a pool of VarLength[T] that can be allocated and reset.
-type (
- VarLengthPool[T any] struct {
- arrayPool Pool[varLengthPoolArray[T]]
- slicePool Pool[[]T]
- }
- // varLengthPoolArray wraps an array and keeps track of the next index to be used to avoid the heap allocation.
- varLengthPoolArray[T any] struct {
- arr [arraySize]T
- next int
- }
-)
-
-// VarLength is a variable length array that can be reused via a pool.
-type VarLength[T any] struct {
- arr *varLengthPoolArray[T]
- slc *[]T
-}
-
-// NewVarLengthPool returns a new VarLengthPool.
-func NewVarLengthPool[T any]() VarLengthPool[T] {
- return VarLengthPool[T]{
- arrayPool: NewPool[varLengthPoolArray[T]](func(v *varLengthPoolArray[T]) {
- v.next = 0
- }),
- slicePool: NewPool[[]T](func(i *[]T) {
- *i = (*i)[:0]
- }),
- }
-}
-
-// NewNilVarLength returns a new VarLength[T] with a nil backing.
-func NewNilVarLength[T any]() VarLength[T] {
- return VarLength[T]{}
-}
-
-// Allocate allocates a new VarLength[T] from the pool.
-func (p *VarLengthPool[T]) Allocate(knownMin int) VarLength[T] {
- if knownMin <= arraySize {
- arr := p.arrayPool.Allocate()
- return VarLength[T]{arr: arr}
- }
- slc := p.slicePool.Allocate()
- return VarLength[T]{slc: slc}
-}
-
-// Reset resets the pool.
-func (p *VarLengthPool[T]) Reset() {
- p.arrayPool.Reset()
- p.slicePool.Reset()
-}
-
-// Append appends items to the backing slice just like the `append` builtin function in Go.
-func (i VarLength[T]) Append(p *VarLengthPool[T], items ...T) VarLength[T] {
- if i.slc != nil {
- *i.slc = append(*i.slc, items...)
- return i
- }
-
- if i.arr == nil {
- i.arr = p.arrayPool.Allocate()
- }
-
- arr := i.arr
- if arr.next+len(items) <= arraySize {
- for _, item := range items {
- arr.arr[arr.next] = item
- arr.next++
- }
- } else {
- slc := p.slicePool.Allocate()
- // Copy the array to the slice.
- for ptr := 0; ptr < arr.next; ptr++ {
- *slc = append(*slc, arr.arr[ptr])
- }
- i.slc = slc
- *i.slc = append(*i.slc, items...)
- }
- return i
-}
-
-// View returns the backing slice.
-func (i VarLength[T]) View() []T {
- if i.slc != nil {
- return *i.slc
- } else if i.arr != nil {
- arr := i.arr
- return arr.arr[:arr.next]
- }
- return nil
-}
-
-// Cut cuts the backing slice to the given length.
-// Precondition: n <= len(i.backing).
-func (i VarLength[T]) Cut(n int) {
- if i.slc != nil {
- *i.slc = (*i.slc)[:n]
- } else if i.arr != nil {
- i.arr.next = n
- }
-}
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/ptr.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/ptr.go
deleted file mode 100644
index f21e1a5d8..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/ptr.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package wazevoapi
-
-import "unsafe"
-
-// PtrFromUintptr resurrects the original *T from the given uintptr.
-// The caller of this function MUST be sure that ptr is valid.
-func PtrFromUintptr[T any](ptr uintptr) *T {
- // Wraps ptrs as the double pointer in order to avoid the unsafe access as detected by race detector.
- //
- // For example, if we have (*function)(unsafe.Pointer(ptr)) instead, then the race detector's "checkptr"
- // subroutine wanrs as "checkptr: pointer arithmetic result points to invalid allocation"
- // https://github.com/golang/go/blob/1ce7fcf139417d618c2730010ede2afb41664211/src/runtime/checkptr.go#L69
- var wrapped *uintptr = &ptr
- return *(**T)(unsafe.Pointer(wrapped))
-}
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go
deleted file mode 100644
index e3118fa69..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/queue.go
+++ /dev/null
@@ -1,26 +0,0 @@
-package wazevoapi
-
-// Queue is the resettable queue where the underlying slice is reused.
-type Queue[T any] struct {
- index int
- Data []T
-}
-
-func (q *Queue[T]) Enqueue(v T) {
- q.Data = append(q.Data, v)
-}
-
-func (q *Queue[T]) Dequeue() (ret T) {
- ret = q.Data[q.index]
- q.index++
- return
-}
-
-func (q *Queue[T]) Empty() bool {
- return q.index >= len(q.Data)
-}
-
-func (q *Queue[T]) Reset() {
- q.index = 0
- q.Data = q.Data[:0]
-}
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/resetmap.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/resetmap.go
deleted file mode 100644
index 3fc7aa143..000000000
--- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/resetmap.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package wazevoapi
-
-// ResetMap resets the map to an empty state, or creates a new map if it is nil.
-func ResetMap[K comparable, V any](m map[K]V) map[K]V {
- if m == nil {
- m = make(map[K]V)
- } else {
- clear(m)
- }
- return m
-}