aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Lex/ModuleMap.cpp
diff options
context:
space:
mode:
authorSterling Augustine <saugustine@google.com>2020-03-04 16:29:58 -0800
committerSterling Augustine <saugustine@google.com>2020-03-11 10:13:33 -0700
commit8ffdabdb61e1e2251b07ee93a4806cde1890f47d (patch)
tree830c1607cb334f1b7a88f450d0d6c55b7e23b034 /clang/lib/Lex/ModuleMap.cpp
parenta9f15832287e72a172faa8faa0c3235de5cba838 (diff)
downloadllvm-8ffdabdb61e1e2251b07ee93a4806cde1890f47d.zip
llvm-8ffdabdb61e1e2251b07ee93a4806cde1890f47d.tar.gz
llvm-8ffdabdb61e1e2251b07ee93a4806cde1890f47d.tar.bz2
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
Diffstat (limited to 'clang/lib/Lex/ModuleMap.cpp')
0 files changed, 0 insertions, 0 deletions