| OLD | NEW | 
|---|
| 1 // Copyright (c) 2008, Google Inc. | 1 // Copyright (c) 2008, Google Inc. | 
| 2 // All rights reserved. | 2 // All rights reserved. | 
| 3 // | 3 // | 
| 4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without | 
| 5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are | 
| 6 // met: | 6 // met: | 
| 7 // | 7 // | 
| 8 //     * Redistributions of source code must retain the above copyright | 8 //     * Redistributions of source code must retain the above copyright | 
| 9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. | 
| 10 //     * Redistributions in binary form must reproduce the above | 10 //     * Redistributions in binary form must reproduce the above | 
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 146   const int batch_size = Static::sizemap()->num_objects_to_move(cl); | 146   const int batch_size = Static::sizemap()->num_objects_to_move(cl); | 
| 147 | 147 | 
| 148   const int num_to_move = min<int>(list->max_length(), batch_size); | 148   const int num_to_move = min<int>(list->max_length(), batch_size); | 
| 149   void *start, *end; | 149   void *start, *end; | 
| 150   int fetch_count = Static::central_cache()[cl].RemoveRange( | 150   int fetch_count = Static::central_cache()[cl].RemoveRange( | 
| 151       &start, &end, num_to_move); | 151       &start, &end, num_to_move); | 
| 152 | 152 | 
| 153   ASSERT((start == NULL) == (fetch_count == 0)); | 153   ASSERT((start == NULL) == (fetch_count == 0)); | 
| 154   if (--fetch_count >= 0) { | 154   if (--fetch_count >= 0) { | 
| 155     size_ += byte_size * fetch_count; | 155     size_ += byte_size * fetch_count; | 
| 156     list->PushRange(fetch_count, SLL_Next(start), end); | 156     // Pop the top of the list and add the rest to the freelist. | 
|  | 157     void *second = start; | 
|  | 158     start = FL_Pop(&second); | 
|  | 159     list->PushRange(fetch_count, second, end); | 
| 157   } | 160   } | 
| 158 | 161 | 
| 159   // Increase max length slowly up to batch_size.  After that, | 162   // Increase max length slowly up to batch_size.  After that, | 
| 160   // increase by batch_size in one shot so that the length is a | 163   // increase by batch_size in one shot so that the length is a | 
| 161   // multiple of batch_size. | 164   // multiple of batch_size. | 
| 162   if (list->max_length() < batch_size) { | 165   if (list->max_length() < batch_size) { | 
| 163     list->set_max_length(list->max_length() + 1); | 166     list->set_max_length(list->max_length() + 1); | 
| 164   } else { | 167   } else { | 
| 165     // Don't let the list get too long.  In 32 bit builds, the length | 168     // Don't let the list get too long.  In 32 bit builds, the length | 
| 166     // is represented by a 16 bit int, so we need to watch out for | 169     // is represented by a 16 bit int, so we need to watch out for | 
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 493 void ThreadCache::set_overall_thread_cache_size(size_t new_size) { | 496 void ThreadCache::set_overall_thread_cache_size(size_t new_size) { | 
| 494   // Clip the value to a reasonable range | 497   // Clip the value to a reasonable range | 
| 495   if (new_size < kMinThreadCacheSize) new_size = kMinThreadCacheSize; | 498   if (new_size < kMinThreadCacheSize) new_size = kMinThreadCacheSize; | 
| 496   if (new_size > (1<<30)) new_size = (1<<30);     // Limit to 1GB | 499   if (new_size > (1<<30)) new_size = (1<<30);     // Limit to 1GB | 
| 497   overall_thread_cache_size_ = new_size; | 500   overall_thread_cache_size_ = new_size; | 
| 498 | 501 | 
| 499   RecomputePerThreadCacheSize(); | 502   RecomputePerThreadCacheSize(); | 
| 500 } | 503 } | 
| 501 | 504 | 
| 502 }  // namespace tcmalloc | 505 }  // namespace tcmalloc | 
| OLD | NEW | 
|---|