aboutsummaryrefslogtreecommitdiff
path: root/lib/std/debug/Dwarf/Unwind/VirtualMachine.zig
AgeCommit message (Collapse)Author
2025-10-02std.debug.Dwarf.Unwind: deal with invalid def_cfa_reg by GNU toolchainsAlex Rønne Petersen
2025-09-30std.debug: significantly speed up capturing stack tracesmlugg
By my estimation, these changes speed up DWARF unwinding when using the self-hosted x86_64 backend by around 7x. There are two very significant enhancements: we no longer iterate frames which don't fit in the stack trace buffer, and we cache register rules (in a fixed buffer) to avoid re-parsing and evaluating CFI instructions in most cases. Alongside this are a bunch of smaller enhancements, such as pre-caching the result of evaluating the CIE's initial instructions, avoiding re-parsing of CIEs, and big simplifications to the `Dwarf.Unwind.VirtualMachine` logic.
2025-09-30fix aarch64-macos DWARF unwindingmlugg
turns out this isn't technically specific to that target at all; other targets just don't emit mid-function 'ret' instructions as much so certain CFI instruction patterns were only seen on aarch64. thanks to jacob for finding the bug <3
2025-09-30change one million thingsmlugg