[all-commits] [llvm/llvm-project] 3f7098: [scudo][standalone] Small changes to the fastpath

Kostya Kortchinsky via All-commits all-commits at lists.llvm.org
Thu Dec 10 10:31:05 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 3f70987b352c44329db8f339d4c537a20cc98329
      https://github.com/llvm/llvm-project/commit/3f70987b352c44329db8f339d4c537a20cc98329
  Author: Kostya Kortchinsky <kostyak at google.com>
  Date:   2020-12-10 (Thu, 10 Dec 2020)

  Changed paths:
    M compiler-rt/lib/scudo/standalone/combined.h

  Log Message:
  -----------
  [scudo][standalone] Small changes to the fastpath

There are a few things that I wanted to reorganize for a while:
- the loop that incrementally goes through classes on failure looked
  horrible in assembly, mostly because of `LIKELY`/`UNLIKELY` within
  the loop. So remove those, we are already in an unlikely scenario
- hooks are not used by default on Android/Fuchsia/etc so mark the
  tests for the existence of the weak functions as unlikely
- mark of couple of conditions as likely/unlikely
- in `reallocate`, the old size was computed again while we already
  have it in a variable. So just use the one we have.
- remove the bitwise AND trick and use a logical AND, that has one
  less test by using a purposeful underflow when `Size` is 0 (I
  actually looked at the assembly of the previous code to steal that
  trick)
- move the read of the options closer to where they are used, mark them
  as `const`

Overall this makes things a tiny bit faster, but cleaner.

Differential Revision: https://reviews.llvm.org/D92689




More information about the All-commits mailing list