github.com/tetratelabs/wazero@v1.7.3-0.20240513003603-48f702e154b5/internal/engine/wazevo/isa_arm64.go (about) 1 //go:build arm64 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/arm64" 8 ) 9 10 func newMachine() backend.Machine { 11 return arm64.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 arm64.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 arm64.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 // TODO: currently, the frame pointers are not used, and saved old sps are relative to the current stack pointer, 30 // so no need to adjustment on arm64. However, when we make it absolute, which in my opinion is better perf-wise 31 // at the expense of slightly costly stack growth, we need to adjust the pushed frame pointers. 32 }