<div dir="ltr">Why not switch it to internal allocator?</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jun 14, 2013 at 1:59 PM, Alexey Samsonov <span dir="ltr"><<a href="mailto:samsonov@google.com" target="_blank">samsonov@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: samsonov<br>
Date: Fri Jun 14 04:59:40 2013<br>
New Revision: 183972<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=183972&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=183972&view=rev</a><br>
Log:<br>
[Sanitizer] Rename InternalVector to InternalMmapVector<br>
<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/asan_globals.cc<br>
    compiler-rt/trunk/lib/lsan/lsan_common.cc<br>
    compiler-rt/trunk/lib/lsan/lsan_common.h<br>
    compiler-rt/trunk/lib/lsan/lsan_common_linux.cc<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h<br>
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h<br>
    compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc<br>
<br>
Modified: compiler-rt/trunk/lib/asan/asan_globals.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_globals.cc?rev=183972&r1=183971&r2=183972&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_globals.cc?rev=183972&r1=183971&r2=183972&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/asan/asan_globals.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/asan_globals.cc Fri Jun 14 04:59:40 2013<br>
@@ -41,7 +41,7 @@ struct DynInitGlobal {<br>
   Global g;<br>
   bool initialized;<br>
 };<br>
-typedef InternalVector<DynInitGlobal> VectorOfGlobals;<br>
+typedef InternalMmapVector<DynInitGlobal> VectorOfGlobals;<br>
 // Lazy-initialized and never deleted.<br>
 static VectorOfGlobals *dynamic_init_globals;<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/lsan_common.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.cc?rev=183972&r1=183971&r2=183972&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.cc?rev=183972&r1=183971&r2=183972&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/lsan/lsan_common.cc (original)<br>
+++ compiler-rt/trunk/lib/lsan/lsan_common.cc Fri Jun 14 04:59:40 2013<br>
@@ -87,7 +87,8 @@ static inline bool CanBeAHeapPointer(upt<br>
 // chunks (tag = kReachable or kIgnored) and finding indirectly leaked chunks<br>
 // (tag = kIndirectlyLeaked). In the second case, there's no flood fill,<br>
 // so frontier = 0.<br>
-void ScanRangeForPointers(uptr begin, uptr end, InternalVector<uptr> *frontier,<br>
+void ScanRangeForPointers(uptr begin, uptr end,<br>
+                          InternalMmapVector<uptr> *frontier,<br>
                           const char *region_type, ChunkTag tag) {<br>
   const uptr alignment = flags()->pointer_alignment();<br>
   if (flags()->log_pointers)<br>
@@ -116,7 +117,7 @@ void ScanRangeForPointers(uptr begin, up<br>
<br>
 // Scan thread data (stacks and TLS) for heap pointers.<br>
 static void ProcessThreads(SuspendedThreadsList const &suspended_threads,<br>
-                           InternalVector<uptr> *frontier) {<br>
+                           InternalMmapVector<uptr> *frontier) {<br>
   InternalScopedBuffer<uptr> registers(SuspendedThreadsList::RegisterCount());<br>
   uptr registers_begin = reinterpret_cast<uptr>(registers.data());<br>
   uptr registers_end = registers_begin + registers.size();<br>
@@ -183,7 +184,7 @@ static void ProcessThreads(SuspendedThre<br>
   }<br>
 }<br>
<br>
-static void FloodFillTag(InternalVector<uptr> *frontier, ChunkTag tag) {<br>
+static void FloodFillTag(InternalMmapVector<uptr> *frontier, ChunkTag tag) {<br>
   while (frontier->size()) {<br>
     uptr next_chunk = frontier->back();<br>
     frontier->pop_back();<br>
@@ -214,7 +215,7 @@ void CollectSuppressedCb::operator()(voi<br>
 // Set the appropriate tag on each chunk.<br>
 static void ClassifyAllChunks(SuspendedThreadsList const &suspended_threads) {<br>
   // Holds the flood fill frontier.<br>
-  InternalVector<uptr> frontier(GetPageSizeCached());<br>
+  InternalMmapVector<uptr> frontier(GetPageSizeCached());<br>
<br>
   if (flags()->use_globals)<br>
     ProcessGlobalRegions(&frontier);<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/lsan_common.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.h?rev=183972&r1=183971&r2=183972&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.h?rev=183972&r1=183971&r2=183972&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/lsan/lsan_common.h (original)<br>
+++ compiler-rt/trunk/lib/lsan/lsan_common.h Fri Jun 14 04:59:40 2013<br>
@@ -77,7 +77,7 @@ inline Flags *flags() { return &lsan_fla<br>
<br>
 void InitCommonLsan();<br>
 // Testing interface. Find leaked chunks and dump their addresses to vector.<br>
-void ReportLeaked(InternalVector<void *> *leaked, uptr sources);<br>
+void ReportLeaked(InternalMmapVector<void *> *leaked, uptr sources);<br>
 // Normal leak check. Find leaks and print a report according to flags.<br>
 void DoLeakCheck();<br>
<br>
@@ -97,15 +97,16 @@ class LeakReport {<br>
   void PrintSummary();<br>
   bool IsEmpty() { return leaks_.size() == 0; }<br>
  private:<br>
-  InternalVector<Leak> leaks_;<br>
+  InternalMmapVector<Leak> leaks_;<br>
 };<br>
<br>
 // Platform-specific functions.<br>
 void InitializePlatformSpecificModules();<br>
-void ProcessGlobalRegions(InternalVector<uptr> *frontier);<br>
-void ProcessPlatformSpecificAllocations(InternalVector<uptr> *frontier);<br>
+void ProcessGlobalRegions(InternalMmapVector<uptr> *frontier);<br>
+void ProcessPlatformSpecificAllocations(InternalMmapVector<uptr> *frontier);<br>
<br>
-void ScanRangeForPointers(uptr begin, uptr end, InternalVector<uptr> *frontier,<br>
+void ScanRangeForPointers(uptr begin, uptr end,<br>
+                          InternalMmapVector<uptr> *frontier,<br>
                           const char *region_type, ChunkTag tag);<br>
<br>
 // Callables for iterating over chunks. Those classes are used as template<br>
@@ -116,11 +117,12 @@ void ScanRangeForPointers(uptr begin, up<br>
 // as reachable and adds them to the frontier.<br>
 class ProcessPlatformSpecificAllocationsCb {<br>
  public:<br>
-  explicit ProcessPlatformSpecificAllocationsCb(InternalVector<uptr> *frontier)<br>
+  explicit ProcessPlatformSpecificAllocationsCb(<br>
+      InternalMmapVector<uptr> *frontier)<br>
       : frontier_(frontier) {}<br>
   void operator()(void *p) const;<br>
  private:<br>
-  InternalVector<uptr> *frontier_;<br>
+  InternalMmapVector<uptr> *frontier_;<br>
 };<br>
<br>
 // Prints addresses of unreachable chunks.<br>
@@ -149,11 +151,11 @@ class MarkIndirectlyLeakedCb {<br>
 // Finds all chunk marked as kIgnored and adds their addresses to frontier.<br>
 class CollectSuppressedCb {<br>
  public:<br>
-  explicit CollectSuppressedCb(InternalVector<uptr> *frontier)<br>
+  explicit CollectSuppressedCb(InternalMmapVector<uptr> *frontier)<br>
       : frontier_(frontier) {}<br>
   void operator()(void *p) const;<br>
  private:<br>
-  InternalVector<uptr> *frontier_;<br>
+  InternalMmapVector<uptr> *frontier_;<br>
 };<br>
<br>
 enum IgnoreObjectResult {<br>
<br>
Modified: compiler-rt/trunk/lib/lsan/lsan_common_linux.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common_linux.cc?rev=183972&r1=183971&r2=183972&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common_linux.cc?rev=183972&r1=183971&r2=183972&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/lsan/lsan_common_linux.cc (original)<br>
+++ compiler-rt/trunk/lib/lsan/lsan_common_linux.cc Fri Jun 14 04:59:40 2013<br>
@@ -53,8 +53,8 @@ void InitializePlatformSpecificModules()<br>
<br>
 static int ProcessGlobalRegionsCallback(struct dl_phdr_info *info, size_t size,<br>
                                         void *data) {<br>
-  InternalVector<uptr> *frontier =<br>
-      reinterpret_cast<InternalVector<uptr> *>(data);<br>
+  InternalMmapVector<uptr> *frontier =<br>
+      reinterpret_cast<InternalMmapVector<uptr> *>(data);<br>
   for (uptr j = 0; j < info->dlpi_phnum; j++) {<br>
     const ElfW(Phdr) *phdr = &(info->dlpi_phdr[j]);<br>
     // We're looking for .data and .bss sections, which reside in writeable,<br>
@@ -83,7 +83,7 @@ static int ProcessGlobalRegionsCallback(<br>
 }<br>
<br>
 // Scan global variables for heap pointers.<br>
-void ProcessGlobalRegions(InternalVector<uptr> *frontier) {<br>
+void ProcessGlobalRegions(InternalMmapVector<uptr> *frontier) {<br>
   // FIXME: dl_iterate_phdr acquires a linker lock, so we run a risk of<br>
   // deadlocking by running this under StopTheWorld. However, the lock is<br>
   // reentrant, so we should be able to fix this by acquiring the lock before<br>
@@ -114,7 +114,7 @@ void ProcessPlatformSpecificAllocationsC<br>
<br>
 // Handle dynamically allocated TLS blocks by treating all chunks allocated from<br>
 // ld-linux.so as reachable.<br>
-void ProcessPlatformSpecificAllocations(InternalVector<uptr> *frontier) {<br>
+void ProcessPlatformSpecificAllocations(InternalMmapVector<uptr> *frontier) {<br>
   if (!flags()->use_tls) return;<br>
   if (!linker) return;<br>
   ForEachChunk(ProcessPlatformSpecificAllocationsCb(frontier));<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=183972&r1=183971&r2=183972&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=183972&r1=183971&r2=183972&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Fri Jun 14 04:59:40 2013<br>
@@ -274,15 +274,15 @@ INLINE int ToLower(int c) {<br>
 // small vectors.<br>
 // WARNING: The current implementation supports only POD types.<br>
 template<typename T><br>
-class InternalVector {<br>
+class InternalMmapVector {<br>
  public:<br>
-  explicit InternalVector(uptr initial_capacity) {<br>
+  explicit InternalMmapVector(uptr initial_capacity) {<br>
     CHECK_GT(initial_capacity, 0);<br>
     capacity_ = initial_capacity;<br>
     size_ = 0;<br>
-    data_ = (T *)MmapOrDie(capacity_ * sizeof(T), "InternalVector");<br>
+    data_ = (T *)MmapOrDie(capacity_ * sizeof(T), "InternalMmapVector");<br>
   }<br>
-  ~InternalVector() {<br>
+  ~InternalMmapVector() {<br>
     UnmapOrDie(data_, capacity_ * sizeof(T));<br>
   }<br>
   T &operator[](uptr i) {<br>
@@ -324,7 +324,7 @@ class InternalVector {<br>
     CHECK_GT(new_capacity, 0);<br>
     CHECK_LE(size_, new_capacity);<br>
     T *new_data = (T *)MmapOrDie(new_capacity * sizeof(T),<br>
-                                 "InternalVector");<br>
+                                 "InternalMmapVector");<br>
     internal_memcpy(new_data, data_, size_ * sizeof(T));<br>
     T *old_data = data_;<br>
     data_ = new_data;<br>
@@ -332,15 +332,15 @@ class InternalVector {<br>
     capacity_ = new_capacity;<br>
   }<br>
   // Disallow evil constructors.<br>
-  InternalVector(const InternalVector&);<br>
-  void operator=(const InternalVector&);<br>
+  InternalMmapVector(const InternalMmapVector&);<br>
+  void operator=(const InternalMmapVector&);<br>
<br>
   T *data_;<br>
   uptr capacity_;<br>
   uptr size_;<br>
 };<br>
<br>
-// HeapSort for arrays and InternalVector.<br>
+// HeapSort for arrays and InternalMmapVector.<br>
 template<class Container, class Compare><br>
 void InternalSort(Container *v, uptr size, Compare comp) {<br>
   if (size < 2)<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h?rev=183972&r1=183971&r2=183972&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h?rev=183972&r1=183971&r2=183972&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h Fri Jun 14 04:59:40 2013<br>
@@ -46,7 +46,7 @@ class SuspendedThreadsList {<br>
   }<br>
<br>
  private:<br>
-  InternalVector<SuspendedThreadID> thread_ids_;<br>
+  InternalMmapVector<SuspendedThreadID> thread_ids_;<br>
<br>
   // Prohibit copy and assign.<br>
   SuspendedThreadsList(const SuspendedThreadsList&);<br>
<br>
Modified: compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc?rev=183972&r1=183971&r2=183972&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc?rev=183972&r1=183971&r2=183972&view=diff</a><br>

==============================================================================<br>
--- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc (original)<br>
+++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc Fri Jun 14 04:59:40 2013<br>
@@ -97,8 +97,8 @@ TEST(SanitizerCommon, SanitizerSetThread<br>
 }<br>
 #endif<br>
<br>
-TEST(SanitizerCommon, InternalVector) {<br>
-  InternalVector<uptr> vector(1);<br>
+TEST(SanitizerCommon, InternalMmapVector) {<br>
+  InternalMmapVector<uptr> vector(1);<br>
   for (uptr i = 0; i < 100; i++) {<br>
     EXPECT_EQ(i, vector.size());<br>
     vector.push_back(i);<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>