Chromium Code Reviews| Index: src/heap/mark-compact.cc |
| diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
| index a4c1971c13f33355ec5468dccadda52e130d53c0..eca2880acd174b0bc7e6e620899ad17f6cd3d794 100644 |
| --- a/src/heap/mark-compact.cc |
| +++ b/src/heap/mark-compact.cc |
| @@ -336,6 +336,8 @@ void MarkCompactCollector::CollectGarbage() { |
| ClearNonLiveReferences(); |
| + RecordObjectStats(); |
|
Michael Lippautz
2016/07/14 09:56:17
It's important to record after clearing non-live r
|
| + |
| #ifdef VERIFY_HEAP |
| if (FLAG_verify_heap) { |
| VerifyMarking(heap_); |
| @@ -2273,6 +2275,20 @@ void MarkCompactCollector::VisitAllObjects(HeapObjectVisitor* visitor) { |
| } |
| } |
| +void MarkCompactCollector::RecordObjectStats() { |
| + if (FLAG_track_gc_object_stats) { |
| + ObjectStatsVisitor visitor(heap()->live_object_stats_, |
| + heap()->dead_object_stats_); |
| + VisitAllObjects(&visitor); |
| + if (FLAG_trace_gc_object_stats) { |
| + heap()->live_object_stats_->PrintJSON("live"); |
| + heap()->dead_object_stats_->PrintJSON("dead"); |
| + } |
| + heap()->live_object_stats_->CheckpointObjectStats(); |
| + heap()->dead_object_stats_->ClearObjectStats(); |
| + } |
| +} |
| + |
| void MarkCompactCollector::MarkLiveObjects() { |
| TRACE_GC(heap()->tracer(), GCTracer::Scope::MC_MARK); |
| double start_time = 0.0; |
| @@ -2372,17 +2388,6 @@ void MarkCompactCollector::MarkLiveObjects() { |
| heap_->tracer()->AddMarkingTime(heap_->MonotonicallyIncreasingTimeInMs() - |
| start_time); |
| } |
| - if (FLAG_track_gc_object_stats) { |
| - ObjectStatsVisitor visitor(heap()->live_object_stats_, |
| - heap()->dead_object_stats_); |
| - VisitAllObjects(&visitor); |
| - if (FLAG_trace_gc_object_stats) { |
| - heap()->live_object_stats_->PrintJSON("live"); |
| - heap()->dead_object_stats_->PrintJSON("dead"); |
| - } |
| - heap()->live_object_stats_->CheckpointObjectStats(); |
| - heap()->dead_object_stats_->ClearObjectStats(); |
| - } |
| } |