Skip to content

Commit 55bbeba

Browse files
committed
FDE: model the epilogue
1 parent 6f5f925 commit 55bbeba

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

profiling/src/wall_time.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,10 @@ pub(crate) mod jit_trampoline {
528528
fde.add_instruction(1, CallFrameInstruction::Offset(RBP, -16));
529529
// After mov rbp, rsp (offset 4): CFA is now RBP + 16
530530
fde.add_instruction(4, CallFrameInstruction::CfaRegister(RBP));
531+
// After pop rbp
532+
fde.add_instruction(0x11, CallFrameInstruction::Restore(RBP));
533+
fde.add_instruction(0x11, CallFrameInstruction::CfaRegister(RSP));
534+
fde.add_instruction(0x11, CallFrameInstruction::CfaOffset(8));
531535
}
532536

533537
#[cfg(target_arch = "aarch64")]
@@ -539,6 +543,11 @@ pub(crate) mod jit_trampoline {
539543
fde.add_instruction(4, CallFrameInstruction::Offset(X30, -8));
540544
// After mov x29, sp (offset 8): CFA is now X29 + 16
541545
fde.add_instruction(8, CallFrameInstruction::CfaRegister(X29));
546+
// After: 0x10: ldp x29, x30, [sp], #16 : CFA is the SP
547+
fde.add_instruction(0x14, CallFrameInstruction::Restore(X29));
548+
fde.add_instruction(0x14, CallFrameInstruction::Restore(X30));
549+
fde.add_instruction(0x14, CallFrameInstruction::CfaRegister(SP));
550+
fde.add_instruction(0x14, CallFrameInstruction::CfaOffset(0));
542551
}
543552

544553
fde

0 commit comments

Comments
 (0)