llvm-project/libunwind
Sterling Augustine 8ffdabdb61 Lazily save initialState of registers during unwind.
Summary:
Copying all of the saved register state on every entry to
parseInstruction is a severe performance contraint, especially
because most of this saved state is never used. On x86 linux
this is about 560 bytes, and will be more on other platforms.

When performance testing libunwind, this memcpy appears at the
top of nearly all our tests.

By only saving this state as needed, we see increasing in performance
of around 2.5% for the ctak test here.

https://github.com/clasp-developers/ctak

Certain internal extremely exception-heavy tasks run in about 2/3
the time.

Note that by stashing the new boolean inside what had been padding in
the original structure, this uses no additional memory.

Subscribers: fedor.sergeev, libcxx-commits

Tags: #libc

Differential Revision: https://reviews.llvm.org/D75692
2020-03-11 10:13:33 -07:00
..
cmake [unwind] Don't link libpthread and libdl on Fuchsia 2019-12-17 17:21:43 -08:00
docs Bump the trunk major version to 11 2020-01-15 13:38:01 +01:00
include unwind: rename `__personality_routine` to `_Unwind_Personality_Fn` 2020-02-10 08:52:31 -08:00
src Lazily save initialState of registers during unwind. 2020-03-11 10:13:33 -07:00
test [libunwind] Fix memory leak in handling of DW_CFA_remember_state and DW_CFA_restore_state 2020-02-18 11:57:18 -08:00
.clang-format
CMakeLists.txt [libunwind] Fix building standalone after c48974ffd7 2020-01-26 22:12:40 +02:00
LICENSE.TXT Fix typos throughout the license files that somehow I and my reviewers 2019-01-21 09:52:34 +00:00