[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