[llvm-commits] [compiler-rt] r170498 - in /compiler-rt/trunk/lib/sanitizer_common: sanitizer_allocator.h tests/sanitizer_allocator_test.cc

Kostya Serebryany kcc at google.com
Tue Dec 18 22:51:45 PST 2012


Author: kcc
Date: Wed Dec 19 00:51:45 2012
New Revision: 170498

URL: http://llvm.org/viewvc/llvm-project?rev=170498&view=rev
Log:
[sanitizer] one more stability fix in 64-bit allocator

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

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=170498&r1=170497&r2=170498&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator.h Wed Dec 19 00:51:45 2012
@@ -297,7 +297,7 @@
     uptr beg_idx = region->allocated_user;
     uptr end_idx = beg_idx + kPopulateSize;
     uptr region_beg = kSpaceBeg + kRegionSize * class_id;
-    if (Max(end_idx, beg_idx + size) > region->mapped_user) {
+    if (end_idx + size > region->mapped_user) {
       // Do the mmap for the user memory.
       CHECK_GT(region->mapped_user + kUserMapSize, end_idx);
       MapWithCallback(region_beg + region->mapped_user, kUserMapSize);
@@ -312,6 +312,7 @@
       i++;
     } while (idx < end_idx);
     region->allocated_user += idx - beg_idx;
+    CHECK_LE(region->allocated_user, region->mapped_user);
     region->allocated_meta += i * kMetadataSize;
     if (region->allocated_meta > region->mapped_meta) {
       // Do the mmap for the metadata.

Modified: compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc?rev=170498&r1=170497&r2=170498&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_allocator_test.cc Wed Dec 19 00:51:45 2012
@@ -85,18 +85,19 @@
   a->Init();
 
   static const uptr sizes[] = {1, 16, 30, 40, 100, 1000, 10000,
-    50000, 60000, 100000, 300000, 500000, 1000000, 2000000};
+    50000, 60000, 100000, 120000, 300000, 500000, 1000000, 2000000};
 
   std::vector<void *> allocated;
 
   uptr last_total_allocated = 0;
-  for (int i = 0; i < 5; i++) {
+  for (int i = 0; i < 3; i++) {
     // Allocate a bunch of chunks.
     for (uptr s = 0; s < ARRAY_SIZE(sizes); s++) {
       uptr size = sizes[s];
       if (!a->CanAllocate(size, 1)) continue;
       // printf("s = %ld\n", size);
-      uptr n_iter = std::max((uptr)6, 1000000 / size);
+      uptr n_iter = std::max((uptr)6, 10000000 / size);
+      // fprintf(stderr, "size: %ld iter: %ld\n", size, n_iter);
       for (uptr i = 0; i < n_iter; i++) {
         char *x = (char*)a->Allocate(size, 1);
         x[0] = 0;





More information about the llvm-commits mailing list