[llvm-commits] [compiler-rt] r169270 - in /compiler-rt/trunk/lib/sanitizer_common: sanitizer_allocator64.h tests/sanitizer_allocator64_test.cc

Kostya Serebryany kcc at google.com
Tue Dec 4 06:39:51 PST 2012


Author: kcc
Date: Tue Dec  4 08:39:51 2012
New Revision: 169270

URL: http://llvm.org/viewvc/llvm-project?rev=169270&view=rev
Log:
[tsan] test the allocator with CompactSizeClassMap

Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h
    compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h?rev=169270&r1=169269&r2=169270&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h Tue Dec  4 08:39:51 2012
@@ -161,8 +161,9 @@
   COMPILER_CHECK(sizeof(RegionInfo) == kCacheLineSize);
 
   static uptr AdditionalSize() {
-    uptr res = sizeof(RegionInfo) * kNumClasses;
-    CHECK_EQ(res % GetPageSizeCached(), 0);
+    uptr PageSize = GetPageSizeCached();
+    uptr res = Max(sizeof(RegionInfo) * kNumClasses, PageSize);
+    CHECK_EQ(res % PageSize, 0);
     return res;
   }
 

Modified: compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc?rev=169270&r1=169269&r2=169270&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator64_test.cc Tue Dec  4 08:39:51 2012
@@ -17,9 +17,11 @@
 static const uptr kAllocatorSpace = 0x700000000000ULL;
 static const uptr kAllocatorSize  = 0x010000000000ULL;  // 1T.
 
-typedef DefaultSizeClassMap SCMap;
-typedef
-  SizeClassAllocator64<kAllocatorSpace, kAllocatorSize, 16, SCMap> Allocator64;
+typedef SizeClassAllocator64<
+  kAllocatorSpace, kAllocatorSize, 16, DefaultSizeClassMap> Allocator64;
+
+typedef SizeClassAllocator64<
+  kAllocatorSpace, kAllocatorSize, 16, CompactSizeClassMap> Allocator64Compact;
 
 template <class SizeClassMap>
 void TestSizeClassMap() {
@@ -74,6 +76,7 @@
     // Allocate a bunch of chunks.
     for (uptr s = 0; s < sizeof(sizes) /sizeof(sizes[0]); s++) {
       uptr size = sizes[s];
+      if (!a.CanAllocate(size, 1)) continue;
       // printf("s = %ld\n", size);
       uptr n_iter = std::max((uptr)2, 1000000 / size);
       for (uptr i = 0; i < n_iter; i++) {
@@ -82,7 +85,7 @@
         CHECK(a.PointerIsMine(x));
         CHECK_GE(a.GetActuallyAllocatedSize(x), size);
         uptr class_id = a.GetSizeClass(x);
-        CHECK_EQ(class_id, SCMap::ClassID(size));
+        CHECK_EQ(class_id, Allocator::SizeClassMapT::ClassID(size));
         uptr *metadata = reinterpret_cast<uptr*>(a.GetMetaData(x));
         metadata[0] = reinterpret_cast<uptr>(x) + 1;
         metadata[1] = 0xABCD;
@@ -110,6 +113,10 @@
   TestSizeClassAllocator<Allocator64>();
 }
 
+TEST(SanitizerCommon, SizeClassAllocator64Compact) {
+  TestSizeClassAllocator<Allocator64Compact>();
+}
+
 template <class Allocator>
 void SizeClassAllocator64MetadataStress() {
   Allocator a;
@@ -139,6 +146,10 @@
   SizeClassAllocator64MetadataStress<Allocator64>();
 }
 
+TEST(SanitizerCommon, SizeClassAllocator64CompactMetadataStress) {
+  SizeClassAllocator64MetadataStress<Allocator64Compact>();
+}
+
 template<class Allocator>
 void FailInAssertionOnOOM() {
   Allocator a;
@@ -256,7 +267,6 @@
   a.TestOnlyUnmap();
 }
 
-
 TEST(SanitizerCommon, CombinedAllocator) {
   TestCombinedAllocator<Allocator64,
       LargeMmapAllocator,





More information about the llvm-commits mailing list