<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>