forked from OSchip/llvm-project
f0703cb1b2
The original code to keep track of the minimum and maximum indices of allocated 32-bit primary regions was sketchy at best. `MinRegionIndex` & `MaxRegionIndex` were shared between all size classes, and could (theoretically) have been updated concurrently. This didn't materialize anywhere I could see, but still it's not proper. This changes those min/max indices by making them class specific rather than global: classes are locked when growing, so there is no concurrency there. This also allows to simplify some of the 32-bit release code, that now doesn't have to go through all the regions to get the proper min/max. Iterate and unmap will no longer have access to the global min/max, but they aren't used as much so this is fine. Differential Revision: https://reviews.llvm.org/D91106 |
||
---|---|---|
.. | ||
standalone | ||
CMakeLists.txt | ||
scudo_allocator.cpp | ||
scudo_allocator.h | ||
scudo_allocator_combined.h | ||
scudo_allocator_secondary.h | ||
scudo_crc32.cpp | ||
scudo_crc32.h | ||
scudo_errors.cpp | ||
scudo_errors.h | ||
scudo_flags.cpp | ||
scudo_flags.h | ||
scudo_flags.inc | ||
scudo_interface_internal.h | ||
scudo_malloc.cpp | ||
scudo_new_delete.cpp | ||
scudo_platform.h | ||
scudo_termination.cpp | ||
scudo_tsd.h | ||
scudo_tsd_exclusive.cpp | ||
scudo_tsd_exclusive.inc | ||
scudo_tsd_shared.cpp | ||
scudo_tsd_shared.inc | ||
scudo_utils.cpp | ||
scudo_utils.h |