Index: src/heap.h |
diff --git a/src/heap.h b/src/heap.h |
index 93978ead5c95e689470703bf746e3af9ab0ec6d2..dd1f710b25224a9521636d12cb221871a39e4f59 100644 |
--- a/src/heap.h |
+++ b/src/heap.h |
@@ -1359,13 +1359,24 @@ class Heap { |
return max_old_generation_size_ - PromotedTotalSize(); |
} |
- static const intptr_t kMinPromotionLimit = 5 * Page::kPageSize; |
- static const intptr_t kMinAllocationLimit = |
+ static const intptr_t kMinimumPromotionLimit = 5 * Page::kPageSize; |
+ static const intptr_t kMinimumAllocationLimit = |
8 * (Page::kPageSize > MB ? Page::kPageSize : MB); |
- intptr_t OldGenLimit(intptr_t old_gen_size, intptr_t min_limit) { |
+ intptr_t OldGenPromotionLimit(intptr_t old_gen_size) { |
+ const int divisor = FLAG_stress_compaction ? 10 : 3; |
+ intptr_t limit = |
+ Max(old_gen_size + old_gen_size / divisor, kMinimumPromotionLimit); |
+ limit += new_space_.Capacity(); |
+ limit *= old_gen_limit_factor_; |
+ intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; |
+ return Min(limit, halfway_to_the_max); |
+ } |
+ |
+ intptr_t OldGenAllocationLimit(intptr_t old_gen_size) { |
const int divisor = FLAG_stress_compaction ? 8 : 2; |
- intptr_t limit = Max(old_gen_size + old_gen_size / divisor, min_limit); |
+ intptr_t limit = |
+ Max(old_gen_size + old_gen_size / divisor, kMinimumAllocationLimit); |
limit += new_space_.Capacity(); |
limit *= old_gen_limit_factor_; |
intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; |