[compiler-rt] r183972 - [Sanitizer] Rename InternalVector to InternalMmapVector

Sergey Matveev earthdok at google.com
Fri Jun 14 03:05:52 PDT 2013


Why not switch it to internal allocator?


On Fri, Jun 14, 2013 at 1:59 PM, Alexey Samsonov <samsonov at google.com>wrote:

> Author: samsonov
> Date: Fri Jun 14 04:59:40 2013
> New Revision: 183972
>
> URL: http://llvm.org/viewvc/llvm-project?rev=183972&view=rev
> Log:
> [Sanitizer] Rename InternalVector to InternalMmapVector
>
> Modified:
>     compiler-rt/trunk/lib/asan/asan_globals.cc
>     compiler-rt/trunk/lib/lsan/lsan_common.cc
>     compiler-rt/trunk/lib/lsan/lsan_common.h
>     compiler-rt/trunk/lib/lsan/lsan_common_linux.cc
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
>     compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h
>     compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc
>
> Modified: compiler-rt/trunk/lib/asan/asan_globals.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_globals.cc?rev=183972&r1=183971&r2=183972&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/asan/asan_globals.cc (original)
> +++ compiler-rt/trunk/lib/asan/asan_globals.cc Fri Jun 14 04:59:40 2013
> @@ -41,7 +41,7 @@ struct DynInitGlobal {
>    Global g;
>    bool initialized;
>  };
> -typedef InternalVector<DynInitGlobal> VectorOfGlobals;
> +typedef InternalMmapVector<DynInitGlobal> VectorOfGlobals;
>  // Lazy-initialized and never deleted.
>  static VectorOfGlobals *dynamic_init_globals;
>
>
> Modified: compiler-rt/trunk/lib/lsan/lsan_common.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.cc?rev=183972&r1=183971&r2=183972&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/lsan/lsan_common.cc (original)
> +++ compiler-rt/trunk/lib/lsan/lsan_common.cc Fri Jun 14 04:59:40 2013
> @@ -87,7 +87,8 @@ static inline bool CanBeAHeapPointer(upt
>  // chunks (tag = kReachable or kIgnored) and finding indirectly leaked
> chunks
>  // (tag = kIndirectlyLeaked). In the second case, there's no flood fill,
>  // so frontier = 0.
> -void ScanRangeForPointers(uptr begin, uptr end, InternalVector<uptr>
> *frontier,
> +void ScanRangeForPointers(uptr begin, uptr end,
> +                          InternalMmapVector<uptr> *frontier,
>                            const char *region_type, ChunkTag tag) {
>    const uptr alignment = flags()->pointer_alignment();
>    if (flags()->log_pointers)
> @@ -116,7 +117,7 @@ void ScanRangeForPointers(uptr begin, up
>
>  // Scan thread data (stacks and TLS) for heap pointers.
>  static void ProcessThreads(SuspendedThreadsList const &suspended_threads,
> -                           InternalVector<uptr> *frontier) {
> +                           InternalMmapVector<uptr> *frontier) {
>    InternalScopedBuffer<uptr>
> registers(SuspendedThreadsList::RegisterCount());
>    uptr registers_begin = reinterpret_cast<uptr>(registers.data());
>    uptr registers_end = registers_begin + registers.size();
> @@ -183,7 +184,7 @@ static void ProcessThreads(SuspendedThre
>    }
>  }
>
> -static void FloodFillTag(InternalVector<uptr> *frontier, ChunkTag tag) {
> +static void FloodFillTag(InternalMmapVector<uptr> *frontier, ChunkTag
> tag) {
>    while (frontier->size()) {
>      uptr next_chunk = frontier->back();
>      frontier->pop_back();
> @@ -214,7 +215,7 @@ void CollectSuppressedCb::operator()(voi
>  // Set the appropriate tag on each chunk.
>  static void ClassifyAllChunks(SuspendedThreadsList const
> &suspended_threads) {
>    // Holds the flood fill frontier.
> -  InternalVector<uptr> frontier(GetPageSizeCached());
> +  InternalMmapVector<uptr> frontier(GetPageSizeCached());
>
>    if (flags()->use_globals)
>      ProcessGlobalRegions(&frontier);
>
> Modified: compiler-rt/trunk/lib/lsan/lsan_common.h
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common.h?rev=183972&r1=183971&r2=183972&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/lsan/lsan_common.h (original)
> +++ compiler-rt/trunk/lib/lsan/lsan_common.h Fri Jun 14 04:59:40 2013
> @@ -77,7 +77,7 @@ inline Flags *flags() { return &lsan_fla
>
>  void InitCommonLsan();
>  // Testing interface. Find leaked chunks and dump their addresses to
> vector.
> -void ReportLeaked(InternalVector<void *> *leaked, uptr sources);
> +void ReportLeaked(InternalMmapVector<void *> *leaked, uptr sources);
>  // Normal leak check. Find leaks and print a report according to flags.
>  void DoLeakCheck();
>
> @@ -97,15 +97,16 @@ class LeakReport {
>    void PrintSummary();
>    bool IsEmpty() { return leaks_.size() == 0; }
>   private:
> -  InternalVector<Leak> leaks_;
> +  InternalMmapVector<Leak> leaks_;
>  };
>
>  // Platform-specific functions.
>  void InitializePlatformSpecificModules();
> -void ProcessGlobalRegions(InternalVector<uptr> *frontier);
> -void ProcessPlatformSpecificAllocations(InternalVector<uptr> *frontier);
> +void ProcessGlobalRegions(InternalMmapVector<uptr> *frontier);
> +void ProcessPlatformSpecificAllocations(InternalMmapVector<uptr>
> *frontier);
>
> -void ScanRangeForPointers(uptr begin, uptr end, InternalVector<uptr>
> *frontier,
> +void ScanRangeForPointers(uptr begin, uptr end,
> +                          InternalMmapVector<uptr> *frontier,
>                            const char *region_type, ChunkTag tag);
>
>  // Callables for iterating over chunks. Those classes are used as template
> @@ -116,11 +117,12 @@ void ScanRangeForPointers(uptr begin, up
>  // as reachable and adds them to the frontier.
>  class ProcessPlatformSpecificAllocationsCb {
>   public:
> -  explicit ProcessPlatformSpecificAllocationsCb(InternalVector<uptr>
> *frontier)
> +  explicit ProcessPlatformSpecificAllocationsCb(
> +      InternalMmapVector<uptr> *frontier)
>        : frontier_(frontier) {}
>    void operator()(void *p) const;
>   private:
> -  InternalVector<uptr> *frontier_;
> +  InternalMmapVector<uptr> *frontier_;
>  };
>
>  // Prints addresses of unreachable chunks.
> @@ -149,11 +151,11 @@ class MarkIndirectlyLeakedCb {
>  // Finds all chunk marked as kIgnored and adds their addresses to
> frontier.
>  class CollectSuppressedCb {
>   public:
> -  explicit CollectSuppressedCb(InternalVector<uptr> *frontier)
> +  explicit CollectSuppressedCb(InternalMmapVector<uptr> *frontier)
>        : frontier_(frontier) {}
>    void operator()(void *p) const;
>   private:
> -  InternalVector<uptr> *frontier_;
> +  InternalMmapVector<uptr> *frontier_;
>  };
>
>  enum IgnoreObjectResult {
>
> Modified: compiler-rt/trunk/lib/lsan/lsan_common_linux.cc
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/lsan/lsan_common_linux.cc?rev=183972&r1=183971&r2=183972&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/lsan/lsan_common_linux.cc (original)
> +++ compiler-rt/trunk/lib/lsan/lsan_common_linux.cc Fri Jun 14 04:59:40
> 2013
> @@ -53,8 +53,8 @@ void InitializePlatformSpecificModules()
>
>  static int ProcessGlobalRegionsCallback(struct dl_phdr_info *info, size_t
> size,
>                                          void *data) {
> -  InternalVector<uptr> *frontier =
> -      reinterpret_cast<InternalVector<uptr> *>(data);
> +  InternalMmapVector<uptr> *frontier =
> +      reinterpret_cast<InternalMmapVector<uptr> *>(data);
>    for (uptr j = 0; j < info->dlpi_phnum; j++) {
>      const ElfW(Phdr) *phdr = &(info->dlpi_phdr[j]);
>      // We're looking for .data and .bss sections, which reside in
> writeable,
> @@ -83,7 +83,7 @@ static int ProcessGlobalRegionsCallback(
>  }
>
>  // Scan global variables for heap pointers.
> -void ProcessGlobalRegions(InternalVector<uptr> *frontier) {
> +void ProcessGlobalRegions(InternalMmapVector<uptr> *frontier) {
>    // FIXME: dl_iterate_phdr acquires a linker lock, so we run a risk of
>    // deadlocking by running this under StopTheWorld. However, the lock is
>    // reentrant, so we should be able to fix this by acquiring the lock
> before
> @@ -114,7 +114,7 @@ void ProcessPlatformSpecificAllocationsC
>
>  // Handle dynamically allocated TLS blocks by treating all chunks
> allocated from
>  // ld-linux.so as reachable.
> -void ProcessPlatformSpecificAllocations(InternalVector<uptr> *frontier) {
> +void ProcessPlatformSpecificAllocations(InternalMmapVector<uptr>
> *frontier) {
>    if (!flags()->use_tls) return;
>    if (!linker) return;
>    ForEachChunk(ProcessPlatformSpecificAllocationsCb(frontier));
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=183972&r1=183971&r2=183972&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Fri Jun 14
> 04:59:40 2013
> @@ -274,15 +274,15 @@ INLINE int ToLower(int c) {
>  // small vectors.
>  // WARNING: The current implementation supports only POD types.
>  template<typename T>
> -class InternalVector {
> +class InternalMmapVector {
>   public:
> -  explicit InternalVector(uptr initial_capacity) {
> +  explicit InternalMmapVector(uptr initial_capacity) {
>      CHECK_GT(initial_capacity, 0);
>      capacity_ = initial_capacity;
>      size_ = 0;
> -    data_ = (T *)MmapOrDie(capacity_ * sizeof(T), "InternalVector");
> +    data_ = (T *)MmapOrDie(capacity_ * sizeof(T), "InternalMmapVector");
>    }
> -  ~InternalVector() {
> +  ~InternalMmapVector() {
>      UnmapOrDie(data_, capacity_ * sizeof(T));
>    }
>    T &operator[](uptr i) {
> @@ -324,7 +324,7 @@ class InternalVector {
>      CHECK_GT(new_capacity, 0);
>      CHECK_LE(size_, new_capacity);
>      T *new_data = (T *)MmapOrDie(new_capacity * sizeof(T),
> -                                 "InternalVector");
> +                                 "InternalMmapVector");
>      internal_memcpy(new_data, data_, size_ * sizeof(T));
>      T *old_data = data_;
>      data_ = new_data;
> @@ -332,15 +332,15 @@ class InternalVector {
>      capacity_ = new_capacity;
>    }
>    // Disallow evil constructors.
> -  InternalVector(const InternalVector&);
> -  void operator=(const InternalVector&);
> +  InternalMmapVector(const InternalMmapVector&);
> +  void operator=(const InternalMmapVector&);
>
>    T *data_;
>    uptr capacity_;
>    uptr size_;
>  };
>
> -// HeapSort for arrays and InternalVector.
> +// HeapSort for arrays and InternalMmapVector.
>  template<class Container, class Compare>
>  void InternalSort(Container *v, uptr size, Compare comp) {
>    if (size < 2)
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h
> URL:
> http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h?rev=183972&r1=183971&r2=183972&view=diff
>
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h
> (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld.h Fri
> Jun 14 04:59:40 2013
> @@ -46,7 +46,7 @@ class SuspendedThreadsList {
>    }
>
>   private:
> -  InternalVector<SuspendedThreadID> thread_ids_;
> +  InternalMmapVector<SuspendedThreadID> thread_ids_;
>
>    // Prohibit copy and assign.
>    SuspendedThreadsList(const SuspendedThreadsList&);
>
> Modified:
> compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc
> URL:
> 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
>
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc
> (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_common_test.cc
> Fri Jun 14 04:59:40 2013
> @@ -97,8 +97,8 @@ TEST(SanitizerCommon, SanitizerSetThread
>  }
>  #endif
>
> -TEST(SanitizerCommon, InternalVector) {
> -  InternalVector<uptr> vector(1);
> +TEST(SanitizerCommon, InternalMmapVector) {
> +  InternalMmapVector<uptr> vector(1);
>    for (uptr i = 0; i < 100; i++) {
>      EXPECT_EQ(i, vector.size());
>      vector.push_back(i);
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130614/333d7a52/attachment.html>


More information about the llvm-commits mailing list