llvm-project/compiler-rt/lib/scudo
Kostya Kortchinsky 52f0130216 [scudo][standalone] Introduce the Primary(s) and LocalCache
Summary:
This CL introduces the 32 & 64-bit primary allocators, and associated
Local Cache. While the general idea is mostly similar to what exists
in sanitizer_common, it departs from the original code somewhat
significantly:
- the 64-bit primary no longer uses a free array at the end of a region
  but uses batches of free blocks in region 0, allowing for a
  convergence with the 32-bit primary behavior;
- as a result, there is only one (templated) local cache type for both
  primary allocators, and memory reclaiming can be implemented similarly
  for the 32-bit & 64-bit platforms;
- 64-bit primary regions are handled a bit differently: we do not
  reserve 4TB of memory that we split, but reserve `NumClasses *
  2^RegionSizeLog`, each region being offseted by a random number of
  pages from its computed base. A side effect of this is that the 64-bit
  primary works on 32-bit platform (I don't think we want to encourage
  it but it's an interesting side effect);

Reviewers: vitalybuka, eugenis, morehouse, hctim

Reviewed By: morehouse

Subscribers: srhines, mgorny, delcypher, jfb, #sanitizers, llvm-commits

Tags: #llvm, #sanitizers

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

llvm-svn: 361159
2019-05-20 14:40:04 +00:00
..
standalone [scudo][standalone] Introduce the Primary(s) and LocalCache 2019-05-20 14:40:04 +00:00
CMakeLists.txt [compiler-rt] Cleanup usage of C++ ABI library 2019-02-16 08:34:26 +00:00
scudo_allocator.cpp [scudo] Tuning changes based on feedback from current use 2019-01-24 15:56:54 +00:00
scudo_allocator.h [scudo][NFC] Remove unneeded template from scudo::CombinedAllocator 2019-05-01 19:36:26 +00:00
scudo_allocator_combined.h [scudo][NFC] Remove unneeded template from scudo::CombinedAllocator 2019-05-01 19:36:26 +00:00
scudo_allocator_secondary.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_crc32.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_crc32.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_errors.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_errors.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_flags.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_flags.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_flags.inc [scudo] Tuning changes based on feedback from current use 2019-01-24 15:56:54 +00:00
scudo_interface_internal.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_malloc.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_new_delete.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_platform.h [scudo] Tuning changes based on feedback from current use 2019-01-24 15:56:54 +00:00
scudo_termination.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd_exclusive.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd_exclusive.inc Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd_shared.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_tsd_shared.inc Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_utils.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
scudo_utils.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00