[compiler-rt] r195571 - [sanitizer] Do not clear memory which comes from secondary allocator.

Sergey Matveev earthdok at google.com
Sun Nov 24 06:45:38 PST 2013


Author: smatveev
Date: Sun Nov 24 08:45:38 2013
New Revision: 195571

URL: http://llvm.org/viewvc/llvm-project?rev=195571&view=rev
Log:
[sanitizer] Do not clear memory which comes from secondary allocator.

Secondary allocator is mmap-based, so the memory is already zeroed.

Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator.h

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator.h?rev=195571&r1=195570&r2=195571&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator.h Sun Nov 24 08:45:38 2013
@@ -1184,13 +1184,14 @@ class CombinedAllocator {
     if (alignment > 8)
       size = RoundUpTo(size, alignment);
     void *res;
-    if (primary_.CanAllocate(size, alignment))
+    bool from_primary = primary_.CanAllocate(size, alignment);
+    if (from_primary)
       res = cache->Allocate(&primary_, primary_.ClassID(size));
     else
       res = secondary_.Allocate(&stats_, size, alignment);
     if (alignment > 8)
       CHECK_EQ(reinterpret_cast<uptr>(res) & (alignment - 1), 0);
-    if (cleared && res)
+    if (cleared && res && from_primary)
       internal_bzero_aligned16(res, RoundUpTo(size, 16));
     return res;
   }





More information about the llvm-commits mailing list