[compiler-rt] a57adc7 - [sanitizer] Construct InternalMmapVector without memory allocation.

Igor Kudrin via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 17 00:03:52 PST 2019


Author: Igor Kudrin
Date: 2019-12-17T15:03:23+07:00
New Revision: a57adc7a0b0dac5484f19f9061eba432d0db19e8

URL: https://github.com/llvm/llvm-project/commit/a57adc7a0b0dac5484f19f9061eba432d0db19e8
DIFF: https://github.com/llvm/llvm-project/commit/a57adc7a0b0dac5484f19f9061eba432d0db19e8.diff

LOG: [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

Added: 
    

Modified: 
    compiler-rt/lib/sanitizer_common/sanitizer_common.h
    compiler-rt/lib/sanitizer_common/tests/sanitizer_common_test.cpp

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/sanitizer_common/sanitizer_common.h b/compiler-rt/lib/sanitizer_common/sanitizer_common.h
index 87b8f02b5b73..3b52172c483c 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<T> &lhs,
 template<typename T>
 class InternalMmapVector : public InternalMmapVectorNoCtor<T> {
  public:
-  InternalMmapVector() { InternalMmapVectorNoCtor<T>::Initialize(1); }
+  InternalMmapVector() { InternalMmapVectorNoCtor<T>::Initialize(0); }
   explicit InternalMmapVector(uptr cnt) {
     InternalMmapVectorNoCtor<T>::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 9c2b88d82d52..212d2f56ff86 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<uptr> empty_vector;
-  CHECK_GT(empty_vector.capacity(), 0U);
+  CHECK_EQ(empty_vector.capacity(), 0U);
   CHECK_EQ(0U, empty_vector.size());
 }
 


        


More information about the llvm-commits mailing list