Index: src/heap.h |
diff --git a/src/heap.h b/src/heap.h |
index 7d9233b30af6de7d2f21cb0d4ad4460d635c9ded..b9da7346c957ffb0406d32d8afedf3b912751893 100644 |
--- a/src/heap.h |
+++ b/src/heap.h |
@@ -1085,9 +1085,23 @@ class Heap { |
700 * kPointerMultiplier; |
intptr_t OldGenerationAllocationLimit(intptr_t old_gen_size) { |
- intptr_t limit = FLAG_stress_compaction |
- ? old_gen_size + old_gen_size / 10 |
- : old_gen_size * old_space_growing_factor_; |
+ intptr_t limit; |
+ if (FLAG_stress_compaction) { |
+ limit = old_gen_size + old_gen_size / 10; |
+ } else if (old_gen_size < max_old_generation_size_ / 8) { |
+ if (max_old_generation_size_ <= kMaxOldSpaceSizeMediumMemoryDevice) { |
+ limit = old_gen_size * 2; |
+ } else { |
+ limit = old_gen_size * 4; |
+ } |
+ } else if (old_gen_size < max_old_generation_size_ / 4) { |
+ limit = static_cast<intptr_t>(old_gen_size * 1.5); |
+ } else if (old_gen_size < max_old_generation_size_ / 2) { |
+ limit = static_cast<intptr_t>(old_gen_size * 1.2); |
+ } else { |
+ limit = static_cast<intptr_t>(old_gen_size * 1.1); |
+ } |
+ |
limit = Max(limit, kMinimumOldGenerationAllocationLimit); |
limit += new_space_.Capacity(); |
intptr_t halfway_to_the_max = (old_gen_size + max_old_generation_size_) / 2; |
@@ -1512,11 +1526,6 @@ class Heap { |
intptr_t max_executable_size_; |
intptr_t maximum_committed_; |
- // The old space growing factor is used in the old space heap growing |
- // strategy. The new old space size is the current old space size times |
- // old_space_growing_factor_. |
- int old_space_growing_factor_; |
- |
// For keeping track of how much data has survived |
// scavenge since last new space expansion. |
int survived_since_last_expansion_; |