[compiler-rt] r289180 - Reverting rL289088 while investigating some test issue on the build servers

Kostya Kortchinsky via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 8 19:28:12 PST 2016


Author: cryptoad
Date: Thu Dec  8 21:28:12 2016
New Revision: 289180

URL: http://llvm.org/viewvc/llvm-project?rev=289180&view=rev
Log:
Reverting rL289088 while investigating some test issue on the build servers

Subscribers: kubabrecka

Differential Revision: https://reviews.llvm.org/D27605

Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator_combined.h
    compiler-rt/trunk/lib/scudo/scudo_allocator_secondary.h

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator_combined.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator_combined.h?rev=289180&r1=289179&r2=289180&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator_combined.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator_combined.h Thu Dec  8 21:28:12 2016
@@ -49,29 +49,16 @@ class CombinedAllocator {
       size = 1;
     if (size + alignment < size) return ReturnNullOrDieOnBadRequest();
     if (check_rss_limit && RssLimitIsExceeded()) return ReturnNullOrDieOnOOM();
-    uptr original_size = size;
-    // If alignment requirements are to be fulfilled by the frontend allocator
-    // rather than by the primary or secondary, passing an alignment lower than
-    // or equal to 8 will prevent any further rounding up, as well as the later
-    // alignment check.
     if (alignment > 8)
       size = RoundUpTo(size, alignment);
     void *res;
     bool from_primary = primary_.CanAllocate(size, alignment);
-    // The primary allocator should return a 2^x aligned allocation when
-    // requested 2^x bytes, hence using the rounded up 'size' when being
-    // serviced by the primary. The secondary takes care of the alignment
-    // without such requirement, and allocating 'size' would use extraneous
-    // memory, so we employ 'original_size'.
     if (from_primary)
       res = cache->Allocate(&primary_, primary_.ClassID(size));
     else
-      res = secondary_.Allocate(&stats_, original_size, alignment);
+      res = secondary_.Allocate(&stats_, size, alignment);
     if (alignment > 8)
       CHECK_EQ(reinterpret_cast<uptr>(res) & (alignment - 1), 0);
-    // When serviced by the secondary, the chunk comes from a mmap allocation
-    // and will be zero'd out anyway. We only need to clear our the chunk if
-    // it was serviced by the primary, hence using the rounded up 'size'.
     if (cleared && res && from_primary)
       internal_bzero_aligned16(res, RoundUpTo(size, 16));
     return res;

Modified: compiler-rt/trunk/lib/scudo/scudo_allocator_secondary.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/scudo/scudo_allocator_secondary.h?rev=289180&r1=289179&r2=289180&view=diff
==============================================================================
--- compiler-rt/trunk/lib/scudo/scudo_allocator_secondary.h (original)
+++ compiler-rt/trunk/lib/scudo/scudo_allocator_secondary.h Thu Dec  8 21:28:12 2016
@@ -54,9 +54,8 @@ class ScudoLargeMmapAllocator {
       uptr NewMapBeg = UserBeg - HeadersSize;
       NewMapBeg = RoundDownTo(NewMapBeg, PageSize) - PageSize;
       CHECK_GE(NewMapBeg, MapBeg);
-      uptr NewMapEnd =
-          RoundUpTo(UserBeg + Size - Alignment - AlignedChunkHeaderSize,
-                    PageSize) + PageSize;
+      uptr NewMapSize = RoundUpTo(MapSize - Alignment, PageSize);
+      uptr NewMapEnd = NewMapBeg + NewMapSize;
       CHECK_LE(NewMapEnd, MapEnd);
       // Unmap the extra memory if it's large enough.
       uptr Diff = NewMapBeg - MapBeg;
@@ -66,8 +65,8 @@ class ScudoLargeMmapAllocator {
       if (Diff > PageSize)
         UnmapOrDie(reinterpret_cast<void *>(NewMapEnd), Diff);
       MapBeg = NewMapBeg;
+      MapSize = NewMapSize;
       MapEnd = NewMapEnd;
-      MapSize = NewMapEnd - NewMapBeg;
     }
     uptr UserEnd = UserBeg - AlignedChunkHeaderSize + Size;
     // For larger alignments, Alignment was added by the frontend to Size.




More information about the llvm-commits mailing list