[all-commits] [llvm/llvm-project] 8ffdab: Lazily save initialState of registers during unwind.

Sterling-Augustine via All-commits all-commits at lists.llvm.org
Wed Mar 11 10:13:57 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 8ffdabdb61e1e2251b07ee93a4806cde1890f47d
      https://github.com/llvm/llvm-project/commit/8ffdabdb61e1e2251b07ee93a4806cde1890f47d
  Author: Sterling Augustine <saugustine at google.com>
  Date:   2020-03-11 (Wed, 11 Mar 2020)

  Changed paths:
    M libunwind/src/DwarfParser.hpp

  Log Message:
  -----------
  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




More information about the All-commits mailing list