diff options
Diffstat (limited to 'vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go')
-rw-r--r-- | vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go b/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go deleted file mode 100644 index 3a29e7cd6..000000000 --- a/vendor/github.com/tetratelabs/wazero/internal/engine/wazevo/backend/machine.go +++ /dev/null @@ -1,119 +0,0 @@ -package backend - -import ( - "context" - - "github.com/tetratelabs/wazero/internal/engine/wazevo/backend/regalloc" - "github.com/tetratelabs/wazero/internal/engine/wazevo/ssa" - "github.com/tetratelabs/wazero/internal/engine/wazevo/wazevoapi" -) - -type ( - // Machine is a backend for a specific ISA machine. - Machine interface { - // StartLoweringFunction is called when the compilation of the given function is started. - // The maxBlockID is the maximum ssa.BasicBlockID in the function. - StartLoweringFunction(maxBlockID ssa.BasicBlockID) - - // LinkAdjacentBlocks is called after finished lowering all blocks in order to create one single instruction list. - LinkAdjacentBlocks(prev, next ssa.BasicBlock) - - // StartBlock is called when the compilation of the given block is started. - // The order of this being called is the reverse post order of the ssa.BasicBlock(s) as we iterate with - // ssa.Builder BlockIteratorReversePostOrderBegin and BlockIteratorReversePostOrderEnd. - StartBlock(ssa.BasicBlock) - - // EndBlock is called when the compilation of the current block is finished. - EndBlock() - - // FlushPendingInstructions flushes the pending instructions to the buffer. - // This will be called after the lowering of each SSA Instruction. - FlushPendingInstructions() - - // DisableStackCheck disables the stack check for the current compilation for debugging/testing. - DisableStackCheck() - - // SetCurrentABI initializes the FunctionABI for the given signature. - SetCurrentABI(abi *FunctionABI) - - // SetCompiler sets the compilation context used for the lifetime of Machine. - // This is only called once per Machine, i.e. before the first compilation. - SetCompiler(Compiler) - - // LowerSingleBranch is called when the compilation of the given single branch is started. - LowerSingleBranch(b *ssa.Instruction) - - // LowerConditionalBranch is called when the compilation of the given conditional branch is started. - LowerConditionalBranch(b *ssa.Instruction) - - // LowerInstr is called for each instruction in the given block except for the ones marked as already lowered - // via Compiler.MarkLowered. The order is reverse, i.e. from the last instruction to the first one. - // - // Note: this can lower multiple instructions (which produce the inputs) at once whenever it's possible - // for optimization. - LowerInstr(*ssa.Instruction) - - // Reset resets the machine state for the next compilation. - Reset() - - // InsertMove inserts a move instruction from src to dst whose type is typ. - InsertMove(dst, src regalloc.VReg, typ ssa.Type) - - // InsertReturn inserts the return instruction to return from the current function. - InsertReturn() - - // InsertLoadConstantBlockArg inserts the instruction(s) to load the constant value into the given regalloc.VReg. - InsertLoadConstantBlockArg(instr *ssa.Instruction, vr regalloc.VReg) - - // Format returns the string representation of the currently compiled machine code. - // This is only for testing purpose. - Format() string - - // RegAlloc does the register allocation after lowering. - RegAlloc() - - // PostRegAlloc does the post register allocation, e.g. setting up prologue/epilogue, redundant move elimination, etc. - PostRegAlloc() - - // ResolveRelocations resolves the relocations after emitting machine code. - // * refToBinaryOffset: the map from the function reference (ssa.FuncRef) to the executable offset. - // * importedFns: the max index of the imported functions at the beginning of refToBinaryOffset - // * executable: the binary to resolve the relocations. - // * relocations: the relocations to resolve. - // * callTrampolineIslandOffsets: the offsets of the trampoline islands in the executable. - ResolveRelocations( - refToBinaryOffset []int, - importedFns int, - executable []byte, - relocations []RelocationInfo, - callTrampolineIslandOffsets []int, - ) - - // Encode encodes the machine instructions to the Compiler. - Encode(ctx context.Context) error - - // CompileGoFunctionTrampoline compiles the trampoline function to call a Go function of the given exit code and signature. - CompileGoFunctionTrampoline(exitCode wazevoapi.ExitCode, sig *ssa.Signature, needModuleContextPtr bool) []byte - - // CompileStackGrowCallSequence returns the sequence of instructions shared by all functions to - // call the stack grow builtin function. - CompileStackGrowCallSequence() []byte - - // CompileEntryPreamble returns the sequence of instructions shared by multiple functions to - // enter the function from Go. - CompileEntryPreamble(signature *ssa.Signature) []byte - - // LowerParams lowers the given parameters. - LowerParams(params []ssa.Value) - - // LowerReturns lowers the given returns. - LowerReturns(returns []ssa.Value) - - // ArgsResultsRegs returns the registers used for arguments and return values. - ArgsResultsRegs() (argResultInts, argResultFloats []regalloc.RealReg) - - // CallTrampolineIslandInfo returns the interval of the offset where the trampoline island is placed, and - // the size of the trampoline island. If islandSize is zero, the trampoline island is not used on this machine. - CallTrampolineIslandInfo(numFunctions int) (interval, islandSize int, err error) - } -) |