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 }