| Index: src/heap/heap.cc | 
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc | 
| index 09f4cc71278e39c57be57099f4c08aedcef34cbd..91741882049c69cdce4a56956ded9e905506773e 100644 | 
| --- a/src/heap/heap.cc | 
| +++ b/src/heap/heap.cc | 
| @@ -142,6 +142,8 @@ Heap::Heap() | 
| full_codegen_bytes_generated_(0), | 
| crankshaft_codegen_bytes_generated_(0), | 
| new_space_allocation_counter_(0), | 
| +      old_generation_allocation_counter_(0), | 
| +      old_generation_size_at_last_gc_(0), | 
| gcs_since_last_deopt_(0), | 
| allocation_sites_scratchpad_length_(0), | 
| promotion_queue_(this), | 
| @@ -467,6 +469,7 @@ void Heap::GarbageCollectionPrologue() { | 
| } | 
| CheckNewSpaceExpansionCriteria(); | 
| UpdateNewSpaceAllocationCounter(); | 
| +  UpdateOldGenerationAllocationCounter(); | 
| } | 
|  | 
|  | 
| @@ -735,7 +738,7 @@ void Heap::GarbageCollectionEpilogue() { | 
| last_gc_time_ = MonotonicallyIncreasingTimeInMs(); | 
|  | 
| ReduceNewSpaceSize( | 
| -      tracer()->CurrentNewSpaceAllocationThroughputInBytesPerMillisecond()); | 
| +      tracer()->CurrentAllocationThroughputInBytesPerMillisecond()); | 
| } | 
|  | 
|  | 
| @@ -1223,6 +1226,10 @@ bool Heap::PerformGarbageCollection( | 
| Scavenge(); | 
| } | 
|  | 
| +  // This should be updated before PostGarbageCollectionProcessing, which can | 
| +  // cause another GC. | 
| +  old_generation_size_at_last_gc_ = PromotedSpaceSizeOfObjects(); | 
| + | 
| UpdateSurvivalStatistics(start_new_space_size); | 
| ConfigureInitialOldGenerationSize(); | 
|  | 
| @@ -4626,11 +4633,11 @@ GCIdleTimeHandler::HeapState Heap::ComputeHeapState() { | 
| heap_state.new_space_capacity = new_space_.Capacity(); | 
| heap_state.new_space_allocation_throughput_in_bytes_per_ms = | 
| tracer()->NewSpaceAllocationThroughputInBytesPerMillisecond(); | 
| -  heap_state.current_new_space_allocation_throughput_in_bytes_per_ms = | 
| -      tracer()->CurrentNewSpaceAllocationThroughputInBytesPerMillisecond(); | 
| +  heap_state.current_allocation_throughput_in_bytes_per_ms = | 
| +      tracer()->CurrentAllocationThroughputInBytesPerMillisecond(); | 
| intptr_t limit = old_generation_allocation_limit_; | 
| if (HasLowAllocationRate( | 
| -          heap_state.current_new_space_allocation_throughput_in_bytes_per_ms)) { | 
| +          heap_state.current_allocation_throughput_in_bytes_per_ms)) { | 
| limit = idle_old_generation_allocation_limit_; | 
| } | 
| heap_state.can_start_incremental_marking = | 
| @@ -4784,7 +4791,8 @@ bool Heap::IdleNotification(double deadline_in_seconds) { | 
| GCIdleTimeHandler::kMaxFrameRenderingIdleTime; | 
|  | 
| if (is_long_idle_notification) { | 
| -    tracer()->SampleNewSpaceAllocation(start_ms, NewSpaceAllocationCounter()); | 
| +    tracer()->SampleAllocation(start_ms, NewSpaceAllocationCounter(), | 
| +                               OldGenerationAllocationCounter()); | 
| } | 
|  | 
| GCIdleTimeHandler::HeapState heap_state = ComputeHeapState(); | 
|  |