[llvm-commits] [compiler-rt] r162561 - /compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h
    Dmitry Vyukov 
    dvyukov at google.com
       
    Fri Aug 24 08:53:15 PDT 2012
    
    
  
Author: dvyukov
Date: Fri Aug 24 10:53:14 2012
New Revision: 162561
URL: http://llvm.org/viewvc/llvm-project?rev=162561&view=rev
Log:
tsan: improve memory allocator a bit
Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h
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=162561&r1=162560&r2=162561&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_allocator64.h Fri Aug 24 10:53:14 2012
@@ -147,11 +147,15 @@
       PopulateFreeList(class_id, region);
     }
     CHECK(!region->free_list.empty());
-    const uptr count = SizeClassMap::MaxCached(class_id);
-    for (uptr i = 0; i < count && !region->free_list.empty(); i++) {
-      AllocatorListNode *node = region->free_list.front();
-      region->free_list.pop_front();
-      free_list->push_front(node);
+    uptr count = SizeClassMap::MaxCached(class_id);
+    if (region->free_list.size() <= count) {
+      free_list->append_front(®ion->free_list);
+    } else {
+      for (uptr i = 0; i < count; i++) {
+        AllocatorListNode *node = region->free_list.front();
+        region->free_list.pop_front();
+        free_list->push_front(node);
+      }
     }
     CHECK(!free_list->empty());
   }
    
    
More information about the llvm-commits
mailing list