forked from OSchip/llvm-project
161cca266a
Summary: This changes a few things to improve memory footprint and performances on Android, and fixes a test compilation error: - add `stdlib.h` to `wrappers_c_test.cc` to address https://bugs.llvm.org/show_bug.cgi?id=42810 - change Android size class maps, based on benchmarks, to improve performances and lower the Svelte memory footprint. Also change the 32-bit region size for said configuration - change the `reallocate` logic to reallocate in place for sizes larger than the original chunk size, when they still fit in the same block. This addresses patterns from `memory_replay` dumps like the following: ``` 202: realloc 0xb48fd000 0xb4930650 12352 202: realloc 0xb48fd000 0xb48fd000 12420 202: realloc 0xb48fd000 0xb48fd000 12492 202: realloc 0xb48fd000 0xb48fd000 12564 202: realloc 0xb48fd000 0xb48fd000 12636 202: realloc 0xb48fd000 0xb48fd000 12708 202: realloc 0xb48fd000 0xb48fd000 12780 202: realloc 0xb48fd000 0xb48fd000 12852 202: realloc 0xb48fd000 0xb48fd000 12924 202: realloc 0xb48fd000 0xb48fd000 12996 202: realloc 0xb48fd000 0xb48fd000 13068 202: realloc 0xb48fd000 0xb48fd000 13140 202: realloc 0xb48fd000 0xb48fd000 13212 202: realloc 0xb48fd000 0xb48fd000 13284 202: realloc 0xb48fd000 0xb48fd000 13356 202: realloc 0xb48fd000 0xb48fd000 13428 202: realloc 0xb48fd000 0xb48fd000 13500 202: realloc 0xb48fd000 0xb48fd000 13572 202: realloc 0xb48fd000 0xb48fd000 13644 202: realloc 0xb48fd000 0xb48fd000 13716 202: realloc 0xb48fd000 0xb48fd000 13788 ... ``` In this situation we were deallocating the old chunk, and allocating a new one for every single one of those, but now we can keep the same chunk (we just updated the header), which saves some heap operations. Reviewers: hctim, morehouse, vitalybuka, eugenis, cferris, rengolin Reviewed By: morehouse Subscribers: srhines, delcypher, #sanitizers, llvm-commits Tags: #llvm, #sanitizers Differential Revision: https://reviews.llvm.org/D67293 llvm-svn: 371628 |
||
---|---|---|
.. | ||
tests | ||
CMakeLists.txt | ||
allocator_config.h | ||
atomic_helpers.h | ||
bytemap.h | ||
checksum.cpp | ||
checksum.h | ||
chunk.h | ||
combined.h | ||
common.cpp | ||
common.h | ||
crc32_hw.cpp | ||
flags.cpp | ||
flags.h | ||
flags.inc | ||
flags_parser.cpp | ||
flags_parser.h | ||
fuchsia.cpp | ||
fuchsia.h | ||
interface.h | ||
internal_defs.h | ||
linux.cpp | ||
linux.h | ||
list.h | ||
local_cache.h | ||
mutex.h | ||
platform.h | ||
primary32.h | ||
primary64.h | ||
quarantine.h | ||
release.h | ||
report.cpp | ||
report.h | ||
secondary.cpp | ||
secondary.h | ||
size_class_map.h | ||
stats.h | ||
string_utils.cpp | ||
string_utils.h | ||
tsd.h | ||
tsd_exclusive.h | ||
tsd_shared.h | ||
vector.h | ||
wrappers_c.cpp | ||
wrappers_c.h | ||
wrappers_c.inc | ||
wrappers_c_bionic.cpp | ||
wrappers_c_checks.h | ||
wrappers_cpp.cpp |