Save exit Wasm FP and PC in component-to-host trampolines (#4601)
* Wasmtime: Add a pointer to `VMRuntimeLimits` in component contexts * Save exit Wasm FP and PC in component-to-host trampolines Fixes #4535 * Add comment about why we deref the trampoline's FP * Update some tests to use new `vmruntime_limits_*` methods
This commit is contained in:
@@ -30,9 +30,9 @@ pub unsafe fn get_next_older_pc_from_fp(fp: usize) -> usize {
|
||||
|
||||
pc
|
||||
}
|
||||
pub unsafe fn get_next_older_fp_from_fp(fp: usize) -> usize {
|
||||
*(fp as *mut usize)
|
||||
}
|
||||
|
||||
// And the current frame pointer points to the next older frame pointer.
|
||||
pub const NEXT_OLDER_FP_FROM_FP_OFFSET: usize = 0;
|
||||
|
||||
pub fn reached_entry_sp(fp: usize, first_wasm_sp: usize) -> bool {
|
||||
// Calls in aarch64 push two i64s (old FP and return PC) so our entry SP is
|
||||
|
||||
@@ -5,11 +5,9 @@ pub unsafe fn get_next_older_pc_from_fp(fp: usize) -> usize {
|
||||
*(fp as *mut usize).offset(14)
|
||||
}
|
||||
|
||||
pub unsafe fn get_next_older_fp_from_fp(fp: usize) -> usize {
|
||||
// The next older "FP" (backchain pointer) was saved in the slot pointed to
|
||||
// by the current "FP".
|
||||
*(fp as *mut usize)
|
||||
}
|
||||
// The next older "FP" (backchain pointer) was saved in the slot pointed to
|
||||
// by the current "FP".
|
||||
pub const NEXT_OLDER_FP_FROM_FP_OFFSET: usize = 0;
|
||||
|
||||
pub fn reached_entry_sp(fp: usize, first_wasm_sp: usize) -> bool {
|
||||
// The "FP" (backchain pointer) holds the value of the stack pointer at
|
||||
|
||||
@@ -4,10 +4,8 @@ pub unsafe fn get_next_older_pc_from_fp(fp: usize) -> usize {
|
||||
*(fp as *mut usize).offset(1)
|
||||
}
|
||||
|
||||
pub unsafe fn get_next_older_fp_from_fp(fp: usize) -> usize {
|
||||
// And the current frame pointer points to the next older frame pointer.
|
||||
*(fp as *mut usize)
|
||||
}
|
||||
// And the current frame pointer points to the next older frame pointer.
|
||||
pub const NEXT_OLDER_FP_FROM_FP_OFFSET: usize = 0;
|
||||
|
||||
pub fn reached_entry_sp(fp: usize, first_wasm_sp: usize) -> bool {
|
||||
// When the FP is just below the SP (because we are in a function prologue
|
||||
|
||||
Reference in New Issue
Block a user