diff options
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go')
-rw-r--r-- | vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi/offsetdata.go | 216 |
1 files changed, 0 insertions, 216 deletions
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 -} |