From a57adc7a0b0dac5484f19f9061eba432d0db19e8 Mon Sep 17 00:00:00 2001 From: Igor Kudrin Date: Wed, 11 Dec 2019 17:37:24 +0700 Subject: [sanitizer] Construct InternalMmapVector without memory allocation. Construction of InternalMmapVector is often followed by a call to reserve(), which may result in immediate reallocation of the memory for the internal storage. This patch delays that allocation until it is really needed. Differential Revision: https://reviews.llvm.org/D71342 --- compiler-rt/lib/sanitizer_common/sanitizer_common.h | 2 +- compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'compiler-rt') diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_common.h b/compiler-rt/lib/sanitizer_common/sanitizer_common.h index 87b8f02b5b7..3b52172c483 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_common.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_common.h @@ -552,7 +552,7 @@ bool operator!=(const InternalMmapVectorNoCtor &lhs, template class InternalMmapVector : public InternalMmapVectorNoCtor { public: - InternalMmapVector() { InternalMmapVectorNoCtor::Initialize(1); } + InternalMmapVector() { InternalMmapVectorNoCtor::Initialize(0); } explicit InternalMmapVector(uptr cnt) { InternalMmapVectorNoCtor::Initialize(cnt); this->resize(cnt); diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cpp b/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cpp index 9c2b88d82d5..212d2f56ff8 100644 --- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cpp +++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cpp @@ -131,7 +131,7 @@ TEST(SanitizerCommon, InternalMmapVector) { EXPECT_EQ((uptr)i, vector.size()); } InternalMmapVector empty_vector; - CHECK_GT(empty_vector.capacity(), 0U); + CHECK_EQ(empty_vector.capacity(), 0U); CHECK_EQ(0U, empty_vector.size()); } -- cgit v1.2.1