[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