Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Side by Side Diff: src/heap/gc-tracer.cc

Issue 1186903005: Add option to compute average scavenge speed w.r.t survived objects. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: bump limit Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/heap/gc-tracer.h ('k') | src/heap/heap.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/heap/gc-tracer.h" 7 #include "src/heap/gc-tracer.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 DCHECK(start_counter_ >= 0); 177 DCHECK(start_counter_ >= 0);
178 DCHECK((collector == SCAVENGER && current_.type == Event::SCAVENGER) || 178 DCHECK((collector == SCAVENGER && current_.type == Event::SCAVENGER) ||
179 (collector == MARK_COMPACTOR && 179 (collector == MARK_COMPACTOR &&
180 (current_.type == Event::MARK_COMPACTOR || 180 (current_.type == Event::MARK_COMPACTOR ||
181 current_.type == Event::INCREMENTAL_MARK_COMPACTOR))); 181 current_.type == Event::INCREMENTAL_MARK_COMPACTOR)));
182 182
183 current_.end_time = heap_->MonotonicallyIncreasingTimeInMs(); 183 current_.end_time = heap_->MonotonicallyIncreasingTimeInMs();
184 current_.end_object_size = heap_->SizeOfObjects(); 184 current_.end_object_size = heap_->SizeOfObjects();
185 current_.end_memory_size = heap_->isolate()->memory_allocator()->Size(); 185 current_.end_memory_size = heap_->isolate()->memory_allocator()->Size();
186 current_.end_holes_size = CountTotalHolesSize(heap_); 186 current_.end_holes_size = CountTotalHolesSize(heap_);
187 current_.survived_new_space_object_size = heap_->SurvivedNewSpaceObjectSize();
187 188
188 AddAllocation(current_.end_time); 189 AddAllocation(current_.end_time);
189 190
190 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB); 191 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB);
191 int used_memory = static_cast<int>(current_.end_object_size / KB); 192 int used_memory = static_cast<int>(current_.end_object_size / KB);
192 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample( 193 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample(
193 current_.end_time, committed_memory); 194 current_.end_time, committed_memory);
194 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample( 195 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample(
195 current_.end_time, used_memory); 196 current_.end_time, used_memory);
196 197
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 durations += iter->pure_incremental_marking_duration; 560 durations += iter->pure_incremental_marking_duration;
560 ++iter; 561 ++iter;
561 } 562 }
562 563
563 if (durations == 0.0) return 0; 564 if (durations == 0.0) return 0;
564 // Make sure the result is at least 1. 565 // Make sure the result is at least 1.
565 return Max<size_t>(static_cast<size_t>(bytes / durations + 0.5), 1); 566 return Max<size_t>(static_cast<size_t>(bytes / durations + 0.5), 1);
566 } 567 }
567 568
568 569
569 intptr_t GCTracer::ScavengeSpeedInBytesPerMillisecond() const { 570 intptr_t GCTracer::ScavengeSpeedInBytesPerMillisecond(
571 ScavengeSpeedMode mode) const {
570 intptr_t bytes = 0; 572 intptr_t bytes = 0;
571 double durations = 0.0; 573 double durations = 0.0;
572 EventBuffer::const_iterator iter = scavenger_events_.begin(); 574 EventBuffer::const_iterator iter = scavenger_events_.begin();
573 while (iter != scavenger_events_.end()) { 575 while (iter != scavenger_events_.end()) {
574 bytes += iter->new_space_object_size; 576 bytes += mode == kForAllObjects ? iter->new_space_object_size
577 : iter->survived_new_space_object_size;
575 durations += iter->end_time - iter->start_time; 578 durations += iter->end_time - iter->start_time;
576 ++iter; 579 ++iter;
577 } 580 }
578 581
579 if (durations == 0.0) return 0; 582 if (durations == 0.0) return 0;
580 // Make sure the result is at least 1. 583 // Make sure the result is at least 1.
581 return Max<size_t>(static_cast<size_t>(bytes / durations + 0.5), 1); 584 return Max<size_t>(static_cast<size_t>(bytes / durations + 0.5), 1);
582 } 585 }
583 586
584 587
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 726
724 727
725 bool GCTracer::SurvivalEventsRecorded() const { 728 bool GCTracer::SurvivalEventsRecorded() const {
726 return survival_events_.size() > 0; 729 return survival_events_.size() > 0;
727 } 730 }
728 731
729 732
730 void GCTracer::ResetSurvivalEvents() { survival_events_.reset(); } 733 void GCTracer::ResetSurvivalEvents() { survival_events_.reset(); }
731 } // namespace internal 734 } // namespace internal
732 } // namespace v8 735 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/gc-tracer.h ('k') | src/heap/heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698