| Index: src/heap/heap.h | 
| diff --git a/src/heap/heap.h b/src/heap/heap.h | 
| index 574481bd39326828eee08412d45d41a3900024cd..0364a8e16fac6d213016ad95692e3775fcf406c5 100644 | 
| --- a/src/heap/heap.h | 
| +++ b/src/heap/heap.h | 
| @@ -634,6 +634,10 @@ class Heap { | 
| // Returns of size of all objects residing in the heap. | 
| intptr_t SizeOfObjects(); | 
|  | 
| +  intptr_t old_generation_allocation_limit() const { | 
| +    return old_generation_allocation_limit_; | 
| +  } | 
| + | 
| // Return the starting address and a mask for the new space.  And-masking an | 
| // address with the mask will result in the start address of the new space | 
| // for all addresses in either semispace. | 
| @@ -1120,8 +1124,14 @@ class Heap { | 
| static const int kMaxExecutableSizeHugeMemoryDevice = | 
| 256 * kPointerMultiplier; | 
|  | 
| -  intptr_t OldGenerationAllocationLimit(intptr_t old_gen_size, | 
| -                                        int freed_global_handles); | 
| +  // Calculates the allocation limit based on a given growing factor and a | 
| +  // given old generation size. | 
| +  intptr_t CalculateOldGenerationAllocationLimit(double factor, | 
| +                                                 intptr_t old_gen_size); | 
| + | 
| +  // Sets the allocation limit to trigger the next full garbage collection. | 
| +  void SetOldGenerationAllocationLimit(intptr_t old_gen_size, | 
| +                                       int freed_global_handles); | 
|  | 
| // Indicates whether inline bump-pointer allocation has been disabled. | 
| bool inline_allocation_disabled() { return inline_allocation_disabled_; } | 
| @@ -1227,13 +1237,12 @@ class Heap { | 
| survived_since_last_expansion_ += survived; | 
| } | 
|  | 
| -  inline bool NextGCIsLikelyToBeFull() { | 
| +  inline bool NextGCIsLikelyToBeFull(intptr_t limit) { | 
| if (FLAG_gc_global) return true; | 
|  | 
| if (FLAG_stress_compaction && (gc_count_ & 1) != 0) return true; | 
|  | 
| -    intptr_t adjusted_allocation_limit = | 
| -        old_generation_allocation_limit_ - new_space_.Capacity(); | 
| +    intptr_t adjusted_allocation_limit = limit - new_space_.Capacity(); | 
|  | 
| if (PromotedTotalSize() >= adjusted_allocation_limit) return true; | 
|  | 
| @@ -1636,6 +1645,10 @@ class Heap { | 
| // generation and on every allocation in large object space. | 
| intptr_t old_generation_allocation_limit_; | 
|  | 
| +  // The allocation limit when there is >16.66ms idle time in the idle time | 
| +  // handler. | 
| +  intptr_t idle_old_generation_allocation_limit_; | 
| + | 
| // Indicates that an allocation has failed in the old generation since the | 
| // last GC. | 
| bool old_gen_exhausted_; | 
|  |