llvm-project/compiler-rt/lib/scudo
Kostya Kortchinsky b44364dd15 [scudo] Do not grab a cache for secondary allocation & per related changes
Summary:
Secondary backed allocations do not require a cache. While it's not necessary
an issue when each thread has its cache, it becomes one with a shared pool of
caches (Android), as a Secondary backed allocation or deallocation holds a
cache that could be useful to another thread doing a Primary backed allocation.

We introduce an additional PRNG and its mutex (to avoid contention with the
Fallback one for Primary allocations) that will provide the `Salt` needed for
Secondary backed allocations.

I changed some of the code in a way that feels more readable to me (eg: using
some values directly rather than going  through ternary assigned variables,
using directly `true`/`false` rather than `FromPrimary`). I will let reviewers
decide if it actually is.

An additional change is to mark `CheckForCallocOverflow` as `UNLIKELY`.

Reviewers: alekseyshl

Reviewed By: alekseyshl

Subscribers: llvm-commits

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

llvm-svn: 307958
2017-07-13 21:01:19 +00:00
..
CMakeLists.txt [scudo] Add Android support 2017-05-05 21:38:22 +00:00
scudo_allocator.cpp [scudo] Do not grab a cache for secondary allocation & per related changes 2017-07-13 21:01:19 +00:00
scudo_allocator.h [scudo] Change aligned alloc functions to be more compliant & perf changes 2017-06-29 16:45:20 +00:00
scudo_allocator_combined.h [scudo] Do not grab a cache for secondary allocation & per related changes 2017-07-13 21:01:19 +00:00
scudo_allocator_secondary.h [Sanitizers] Move cached allocator_may_return_null flag to sanitizer_allocator 2017-06-20 21:23:02 +00:00
scudo_crc32.cpp [scudo] CRC32 optimizations 2017-05-09 15:12:38 +00:00
scudo_crc32.h [scudo] CRC32 optimizations 2017-05-09 15:12:38 +00:00
scudo_flags.cpp [scudo] lower quarantine default sizes 2017-05-18 20:47:35 +00:00
scudo_flags.h [scudo] 32-bit and hardware agnostic support 2016-11-30 17:32:20 +00:00
scudo_flags.inc [scudo] 32-bit quarantine sizes adjustments and bug fixes 2017-02-03 20:49:42 +00:00
scudo_interceptors.cpp [scudo] 32-bit and hardware agnostic support 2016-11-30 17:32:20 +00:00
scudo_new_delete.cpp [Sanitizers] Operator new() interceptors always die on allocation error 2017-06-28 21:58:57 +00:00
scudo_termination.cpp [scudo] 32-bit and hardware agnostic support 2016-11-30 17:32:20 +00:00
scudo_tls.h [scudo] PRNG makeover 2017-07-12 15:29:08 +00:00
scudo_tls_android.cpp [scudo] Change aligned alloc functions to be more compliant & perf changes 2017-06-29 16:45:20 +00:00
scudo_tls_android.inc [scudo] Add Android support 2017-05-05 21:38:22 +00:00
scudo_tls_context_android.inc [scudo] Add Android support 2017-05-05 21:38:22 +00:00
scudo_tls_context_linux.inc [scudo] Add Android support 2017-05-05 21:38:22 +00:00
scudo_tls_linux.cpp [scudo] Check the return values of the pthread_* functions 2017-05-26 15:39:22 +00:00
scudo_tls_linux.inc [scudo] Add Android support 2017-05-05 21:38:22 +00:00
scudo_utils.cpp [scudo] PRNG makeover 2017-07-12 15:29:08 +00:00
scudo_utils.h [scudo] PRNG makeover 2017-07-12 15:29:08 +00:00