github.com/tetratelabs/wazero@v1.7.3-0.20240513003603-48f702e154b5/internal/engine/wazevo/isa_amd64.go (about)

     1  //go:build amd64
     2  
     3  package wazevo
     4  
     5  import (
     6  	"github.com/tetratelabs/wazero/internal/engine/wazevo/backend"
     7  	"github.com/tetratelabs/wazero/internal/engine/wazevo/backend/isa/amd64"
     8  )
     9  
    10  func newMachine() backend.Machine {
    11  	return amd64.NewBackend()
    12  }
    13  
    14  // unwindStack is a function to unwind the stack, and appends return addresses to `returnAddresses` slice.
    15  // The implementation must be aligned with the ABI/Calling convention.
    16  func unwindStack(sp, fp, top uintptr, returnAddresses []uintptr) []uintptr {
    17  	return amd64.UnwindStack(sp, fp, top, returnAddresses)
    18  }
    19  
    20  // goCallStackView is a function to get a view of the stack before a Go call, which
    21  // is the view of the stack allocated in CompileGoFunctionTrampoline.
    22  func goCallStackView(stackPointerBeforeGoCall *uint64) []uint64 {
    23  	return amd64.GoCallStackView(stackPointerBeforeGoCall)
    24  }
    25  
    26  // adjustClonedStack is a function to adjust the stack after it is grown.
    27  // More precisely, absolute addresses (frame pointers) in the stack must be adjusted.
    28  func adjustClonedStack(oldsp, oldTop, sp, fp, top uintptr) {
    29  	amd64.AdjustClonedStack(oldsp, oldTop, sp, fp, top)
    30  }