[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