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

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

Issue 2264033002: [heap] Tracer: Handle incremental marking scopes (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 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
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/heap/gc-tracer.h" 5 #include "src/heap/gc-tracer.h"
6 6
7 #include "src/counters.h" 7 #include "src/counters.h"
8 #include "src/heap/heap-inl.h" 8 #include "src/heap/heap-inl.h"
9 #include "src/isolate.h" 9 #include "src/isolate.h"
10 10
(...skipping 13 matching lines...) Expand all
24 GCTracer::Scope::Scope(GCTracer* tracer, ScopeId scope) 24 GCTracer::Scope::Scope(GCTracer* tracer, ScopeId scope)
25 : tracer_(tracer), scope_(scope) { 25 : tracer_(tracer), scope_(scope) {
26 start_time_ = tracer_->heap_->MonotonicallyIncreasingTimeInMs(); 26 start_time_ = tracer_->heap_->MonotonicallyIncreasingTimeInMs();
27 // TODO(cbruni): remove once we fully moved to a trace-based system. 27 // TODO(cbruni): remove once we fully moved to a trace-based system.
28 if (FLAG_runtime_call_stats) { 28 if (FLAG_runtime_call_stats) {
29 RuntimeCallStats::Enter(tracer_->heap_->isolate(), &timer_, 29 RuntimeCallStats::Enter(tracer_->heap_->isolate(), &timer_,
30 &RuntimeCallStats::GC); 30 &RuntimeCallStats::GC);
31 } 31 }
32 } 32 }
33 33
34
35 GCTracer::Scope::~Scope() { 34 GCTracer::Scope::~Scope() {
36 DCHECK(scope_ < NUMBER_OF_SCOPES); // scope_ is unsigned. 35 DCHECK(scope_ < NUMBER_OF_SCOPES); // scope_ is unsigned.
37 tracer_->current_.scopes[scope_] += 36 if (scope_ >= FIRST_INCREMENTAL_SCOPE && scope_ <= LAST_INCREMENTAL_SCOPE) {
38 tracer_->heap_->MonotonicallyIncreasingTimeInMs() - start_time_; 37 tracer_->cumulative_incremental_scopes_[scope_] +=
38 tracer_->heap_->MonotonicallyIncreasingTimeInMs() - start_time_;
39 } else {
40 tracer_->current_.scopes[scope_] +=
41 tracer_->heap_->MonotonicallyIncreasingTimeInMs() - start_time_;
42 }
39 // TODO(cbruni): remove once we fully moved to a trace-based system. 43 // TODO(cbruni): remove once we fully moved to a trace-based system.
40 if (FLAG_runtime_call_stats) { 44 if (FLAG_runtime_call_stats) {
41 RuntimeCallStats::Leave(tracer_->heap_->isolate(), &timer_); 45 RuntimeCallStats::Leave(tracer_->heap_->isolate(), &timer_);
42 } 46 }
43 } 47 }
44 48
45 const char* GCTracer::Scope::Name(ScopeId id) { 49 const char* GCTracer::Scope::Name(ScopeId id) {
46 #define CASE(scope) \ 50 #define CASE(scope) \
47 case Scope::scope: \ 51 case Scope::scope: \
48 return "V8.GC_" #scope; 52 return "V8.GC_" #scope;
(...skipping 13 matching lines...) Expand all
62 collector_reason(collector_reason), 66 collector_reason(collector_reason),
63 start_time(0.0), 67 start_time(0.0),
64 end_time(0.0), 68 end_time(0.0),
65 reduce_memory(false), 69 reduce_memory(false),
66 start_object_size(0), 70 start_object_size(0),
67 end_object_size(0), 71 end_object_size(0),
68 start_memory_size(0), 72 start_memory_size(0),
69 end_memory_size(0), 73 end_memory_size(0),
70 start_holes_size(0), 74 start_holes_size(0),
71 end_holes_size(0), 75 end_holes_size(0),
76 new_space_object_size(0),
77 survived_new_space_object_size(0),
72 cumulative_incremental_marking_steps(0), 78 cumulative_incremental_marking_steps(0),
73 incremental_marking_steps(0), 79 incremental_marking_steps(0),
74 cumulative_incremental_marking_bytes(0), 80 cumulative_incremental_marking_bytes(0),
75 incremental_marking_bytes(0), 81 incremental_marking_bytes(0),
76 cumulative_incremental_marking_duration(0.0), 82 cumulative_incremental_marking_duration(0.0),
77 incremental_marking_duration(0.0), 83 incremental_marking_duration(0.0),
78 cumulative_pure_incremental_marking_duration(0.0), 84 cumulative_pure_incremental_marking_duration(0.0),
79 pure_incremental_marking_duration(0.0), 85 pure_incremental_marking_duration(0.0),
80 longest_incremental_marking_step(0.0) { 86 longest_incremental_marking_step(0.0),
87 cumulative_incremental_marking_finalization_steps(0),
88 cumulative_incremental_marking_finalizaton_duration(0),
89 longest_incremental_marking_finalization_step(0),
90 incremental_marking_finalizaton_steps(0),
91 incremental_marking_finalization_duration(0) {
92 for (int i = Scope::FIRST_INCREMENTAL_SCOPE;
93 i <= Scope::LAST_INCREMENTAL_SCOPE; i++) {
94 cumulative_incremental_scopes[i] = 0;
95 }
81 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) { 96 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) {
82 scopes[i] = 0; 97 scopes[i] = 0;
83 } 98 }
84 } 99 }
85 100
86 101
87 const char* GCTracer::Event::TypeName(bool short_name) const { 102 const char* GCTracer::Event::TypeName(bool short_name) const {
88 switch (type) { 103 switch (type) {
89 case SCAVENGER: 104 case SCAVENGER:
90 if (short_name) { 105 if (short_name) {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 204
190 current_.cumulative_incremental_marking_steps = 205 current_.cumulative_incremental_marking_steps =
191 cumulative_incremental_marking_steps_; 206 cumulative_incremental_marking_steps_;
192 current_.cumulative_incremental_marking_bytes = 207 current_.cumulative_incremental_marking_bytes =
193 cumulative_incremental_marking_bytes_; 208 cumulative_incremental_marking_bytes_;
194 current_.cumulative_incremental_marking_duration = 209 current_.cumulative_incremental_marking_duration =
195 cumulative_incremental_marking_duration_; 210 cumulative_incremental_marking_duration_;
196 current_.cumulative_pure_incremental_marking_duration = 211 current_.cumulative_pure_incremental_marking_duration =
197 cumulative_pure_incremental_marking_duration_; 212 cumulative_pure_incremental_marking_duration_;
198 current_.longest_incremental_marking_step = longest_incremental_marking_step_; 213 current_.longest_incremental_marking_step = longest_incremental_marking_step_;
214 current_.cumulative_incremental_marking_finalization_steps =
215 cumulative_incremental_marking_finalization_steps_;
216 current_.cumulative_incremental_marking_finalizaton_duration =
217 cumulative_incremental_marking_finalization_duration_;
218 current_.longest_incremental_marking_finalization_step =
219 longest_incremental_marking_finalization_step_;
199 220
200 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) { 221 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) {
201 current_.scopes[i] = 0; 222 current_.scopes[i] = 0;
202 } 223 }
224
225 for (int i = Scope::FIRST_INCREMENTAL_SCOPE;
226 i <= Scope::LAST_INCREMENTAL_SCOPE; i++) {
227 current_.cumulative_incremental_scopes[i] =
228 cumulative_incremental_scopes_[i];
229 }
230
203 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB); 231 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB);
204 int used_memory = static_cast<int>(current_.start_object_size / KB); 232 int used_memory = static_cast<int>(current_.start_object_size / KB);
205 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample( 233 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample(
206 start_time, committed_memory); 234 start_time, committed_memory);
207 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample( 235 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample(
208 start_time, used_memory); 236 start_time, used_memory);
209 // TODO(cbruni): remove once we fully moved to a trace-based system. 237 // TODO(cbruni): remove once we fully moved to a trace-based system.
210 if (FLAG_runtime_call_stats) { 238 if (FLAG_runtime_call_stats) {
211 RuntimeCallStats::Enter(heap_->isolate(), &timer_, &RuntimeCallStats::GC); 239 RuntimeCallStats::Enter(heap_->isolate(), &timer_, &RuntimeCallStats::GC);
212 } 240 }
(...skipping 23 matching lines...) Expand all
236 AddAllocation(current_.end_time); 264 AddAllocation(current_.end_time);
237 265
238 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB); 266 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB);
239 int used_memory = static_cast<int>(current_.end_object_size / KB); 267 int used_memory = static_cast<int>(current_.end_object_size / KB);
240 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample( 268 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample(
241 current_.end_time, committed_memory); 269 current_.end_time, committed_memory);
242 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample( 270 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample(
243 current_.end_time, used_memory); 271 current_.end_time, used_memory);
244 272
245 double duration = current_.end_time - current_.start_time; 273 double duration = current_.end_time - current_.start_time;
274
275 const Event* baseline = nullptr;
246 if (current_.type == Event::SCAVENGER) { 276 if (current_.type == Event::SCAVENGER) {
247 current_.incremental_marking_steps = 277 baseline = &previous_;
248 current_.cumulative_incremental_marking_steps -
249 previous_.cumulative_incremental_marking_steps;
250 current_.incremental_marking_bytes =
251 current_.cumulative_incremental_marking_bytes -
252 previous_.cumulative_incremental_marking_bytes;
253 current_.incremental_marking_duration =
254 current_.cumulative_incremental_marking_duration -
255 previous_.cumulative_incremental_marking_duration;
256 current_.pure_incremental_marking_duration =
257 current_.cumulative_pure_incremental_marking_duration -
258 previous_.cumulative_pure_incremental_marking_duration;
259 recorded_scavenges_total_.Push( 278 recorded_scavenges_total_.Push(
260 MakeBytesAndDuration(current_.new_space_object_size, duration)); 279 MakeBytesAndDuration(current_.new_space_object_size, duration));
261 recorded_scavenges_survived_.Push(MakeBytesAndDuration( 280 recorded_scavenges_survived_.Push(MakeBytesAndDuration(
262 current_.survived_new_space_object_size, duration)); 281 current_.survived_new_space_object_size, duration));
263 } else if (current_.type == Event::INCREMENTAL_MARK_COMPACTOR) { 282 } else if (current_.type == Event::INCREMENTAL_MARK_COMPACTOR) {
264 current_.incremental_marking_steps = 283 baseline = &previous_incremental_mark_compactor_event_;
265 current_.cumulative_incremental_marking_steps -
266 previous_incremental_mark_compactor_event_
267 .cumulative_incremental_marking_steps;
268 current_.incremental_marking_bytes =
269 current_.cumulative_incremental_marking_bytes -
270 previous_incremental_mark_compactor_event_
271 .cumulative_incremental_marking_bytes;
272 current_.incremental_marking_duration =
273 current_.cumulative_incremental_marking_duration -
274 previous_incremental_mark_compactor_event_
275 .cumulative_incremental_marking_duration;
276 current_.pure_incremental_marking_duration =
277 current_.cumulative_pure_incremental_marking_duration -
278 previous_incremental_mark_compactor_event_
279 .cumulative_pure_incremental_marking_duration;
280 longest_incremental_marking_step_ = 0.0; 284 longest_incremental_marking_step_ = 0.0;
285 longest_incremental_marking_finalization_step_ = 0.0;
281 recorded_incremental_marking_steps_.Push( 286 recorded_incremental_marking_steps_.Push(
282 MakeBytesAndDuration(current_.incremental_marking_bytes, 287 MakeBytesAndDuration(current_.incremental_marking_bytes,
283 current_.pure_incremental_marking_duration)); 288 current_.pure_incremental_marking_duration));
284 recorded_incremental_mark_compacts_.Push( 289 recorded_incremental_mark_compacts_.Push(
285 MakeBytesAndDuration(current_.start_object_size, duration)); 290 MakeBytesAndDuration(current_.start_object_size, duration));
286 combined_mark_compact_speed_cache_ = 0.0; 291 combined_mark_compact_speed_cache_ = 0.0;
287 } else { 292 } else {
288 DCHECK(current_.incremental_marking_bytes == 0); 293 DCHECK(current_.incremental_marking_bytes == 0);
289 DCHECK(current_.incremental_marking_duration == 0); 294 DCHECK(current_.incremental_marking_duration == 0);
290 DCHECK(current_.pure_incremental_marking_duration == 0); 295 DCHECK(current_.pure_incremental_marking_duration == 0);
291 longest_incremental_marking_step_ = 0.0; 296 longest_incremental_marking_step_ = 0.0;
297 longest_incremental_marking_finalization_step_ = 0.0;
292 recorded_mark_compacts_.Push( 298 recorded_mark_compacts_.Push(
293 MakeBytesAndDuration(current_.start_object_size, duration)); 299 MakeBytesAndDuration(current_.start_object_size, duration));
294 combined_mark_compact_speed_cache_ = 0.0; 300 combined_mark_compact_speed_cache_ = 0.0;
295 } 301 }
296 302
297 // TODO(ernstm): move the code below out of GCTracer. 303 if (baseline != nullptr) {
Michael Lippautz 2016/08/22 12:40:06 The code this TODO referred to is long gone.
304 current_.incremental_marking_steps =
305 current_.cumulative_incremental_marking_steps -
306 baseline->cumulative_incremental_marking_steps;
307 current_.incremental_marking_bytes =
308 current_.cumulative_incremental_marking_bytes -
309 baseline->cumulative_incremental_marking_bytes;
310 current_.incremental_marking_duration =
311 current_.cumulative_incremental_marking_duration -
312 baseline->cumulative_incremental_marking_duration;
313 current_.pure_incremental_marking_duration =
314 current_.cumulative_pure_incremental_marking_duration -
315 baseline->cumulative_pure_incremental_marking_duration;
316 current_.incremental_marking_finalizaton_steps =
317 current_.cumulative_incremental_marking_finalization_steps -
318 baseline->cumulative_incremental_marking_finalization_steps;
319 current_.incremental_marking_finalization_duration =
320 current_.cumulative_incremental_marking_finalizaton_duration -
321 baseline->cumulative_incremental_marking_finalizaton_duration;
322 for (int i = Scope::FIRST_INCREMENTAL_SCOPE;
323 i <= Scope::LAST_INCREMENTAL_SCOPE; i++) {
324 current_.scopes[i] = current_.cumulative_incremental_scopes[i] -
325 baseline->cumulative_incremental_scopes[i];
326 }
327 }
298 328
299 double spent_in_mutator = Max(current_.start_time - previous_.end_time, 0.0); 329 double spent_in_mutator = Max(current_.start_time - previous_.end_time, 0.0);
300
301 heap_->UpdateCumulativeGCStatistics(duration, spent_in_mutator, 330 heap_->UpdateCumulativeGCStatistics(duration, spent_in_mutator,
302 current_.scopes[Scope::MC_MARK]); 331 current_.scopes[Scope::MC_MARK]);
303 332
304 if (current_.type == Event::SCAVENGER && FLAG_trace_gc_ignore_scavenger) 333 if (current_.type == Event::SCAVENGER && FLAG_trace_gc_ignore_scavenger)
305 return; 334 return;
306 335
307 if (FLAG_trace_gc_nvp) 336 if (FLAG_trace_gc_nvp) {
308 PrintNVP(); 337 PrintNVP();
309 else 338 } else {
310 Print(); 339 Print();
340 }
311 341
312 if (FLAG_trace_gc) { 342 if (FLAG_trace_gc) {
313 heap_->PrintShortHeapStatistics(); 343 heap_->PrintShortHeapStatistics();
314 } 344 }
315 345
316 longest_incremental_marking_finalization_step_ = 0.0;
Michael Lippautz 2016/08/22 12:40:06 I don't see why we would refer to previous events
317 cumulative_incremental_marking_finalization_steps_ = 0;
318 cumulative_incremental_marking_finalization_duration_ = 0.0;
319 // TODO(cbruni): remove once we fully moved to a trace-based system. 346 // TODO(cbruni): remove once we fully moved to a trace-based system.
320 if (FLAG_runtime_call_stats) { 347 if (FLAG_runtime_call_stats) {
321 RuntimeCallStats::Leave(heap_->isolate(), &timer_); 348 RuntimeCallStats::Leave(heap_->isolate(), &timer_);
322 } 349 }
323 } 350 }
324 351
325 352
326 void GCTracer::SampleAllocation(double current_ms, 353 void GCTracer::SampleAllocation(double current_ms,
327 size_t new_space_counter_bytes, 354 size_t new_space_counter_bytes,
328 size_t old_generation_counter_bytes) { 355 size_t old_generation_counter_bytes) {
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 "evacuate=%.1f " 595 "evacuate=%.1f "
569 "evacuate.candidates=%.1f " 596 "evacuate.candidates=%.1f "
570 "evacuate.clean_up=%.1f " 597 "evacuate.clean_up=%.1f "
571 "evacuate.copy=%.1f " 598 "evacuate.copy=%.1f "
572 "evacuate.update_pointers=%.1f " 599 "evacuate.update_pointers=%.1f "
573 "evacuate.update_pointers.to_evacuated=%.1f " 600 "evacuate.update_pointers.to_evacuated=%.1f "
574 "evacuate.update_pointers.to_new=%.1f " 601 "evacuate.update_pointers.to_new=%.1f "
575 "evacuate.update_pointers.weak=%.1f " 602 "evacuate.update_pointers.weak=%.1f "
576 "external.mc_prologue=%.1f " 603 "external.mc_prologue=%.1f "
577 "external.mc_epilogue=%.1f " 604 "external.mc_epilogue=%.1f "
578 "external.mc_incremental_prologue=%.1f "
579 "external.mc_incremental_epilogue=%.1f "
580 "external.weak_global_handles=%.1f " 605 "external.weak_global_handles=%.1f "
581 "finish=%.1f " 606 "finish=%.1f "
582 "mark=%.1f " 607 "mark=%.1f "
583 "mark.finish_incremental=%.1f " 608 "mark.finish_incremental=%.1f "
584 "mark.prepare_code_flush=%.1f " 609 "mark.prepare_code_flush=%.1f "
585 "mark.roots=%.1f " 610 "mark.roots=%.1f "
586 "mark.weak_closure=%.1f " 611 "mark.weak_closure=%.1f "
587 "mark.weak_closure.ephemeral=%.1f " 612 "mark.weak_closure.ephemeral=%.1f "
588 "mark.weak_closure.weak_handles=%.1f " 613 "mark.weak_closure.weak_handles=%.1f "
589 "mark.weak_closure.weak_roots=%.1f " 614 "mark.weak_closure.weak_roots=%.1f "
590 "mark.weak_closure.harmony=%.1f " 615 "mark.weak_closure.harmony=%.1f "
591 "sweep=%.1f " 616 "sweep=%.1f "
592 "sweep.code=%.1f " 617 "sweep.code=%.1f "
593 "sweep.map=%.1f " 618 "sweep.map=%.1f "
594 "sweep.old=%.1f " 619 "sweep.old=%.1f "
595 "incremental_finalize=%.1f " 620 "incremental=%.1f "
596 "steps_count=%d " 621 "incremental.finalize=%.1f "
597 "steps_took=%.1f " 622 "incremental.finalize.external.prologue=%.1f "
598 "longest_step=%.1f " 623 "incremental.finalize.external.epilogue=%.1f "
599 "finalization_steps_count=%d " 624 "incremental.finalize.object_grouping=%.1f "
600 "finalization_steps_took=%.1f " 625 "incremental_finalize_longest_step=%.1f "
601 "finalization_longest_step=%.1f " 626 "incremental_finalize_steps_count=%d "
627 "incremental_steps_count=%d "
628 "incremental_longest_step=%.1f "
602 "incremental_marking_throughput=%.f " 629 "incremental_marking_throughput=%.f "
603 "total_size_before=%" V8PRIdPTR 630 "total_size_before=%" V8PRIdPTR
604 " " 631 " "
605 "total_size_after=%" V8PRIdPTR 632 "total_size_after=%" V8PRIdPTR
606 " " 633 " "
607 "holes_size_before=%" V8PRIdPTR 634 "holes_size_before=%" V8PRIdPTR
608 " " 635 " "
609 "holes_size_after=%" V8PRIdPTR 636 "holes_size_after=%" V8PRIdPTR
610 " " 637 " "
611 "allocated=%" V8PRIdPTR 638 "allocated=%" V8PRIdPTR
(...skipping 28 matching lines...) Expand all
640 current_.scopes[Scope::MC_EVACUATE], 667 current_.scopes[Scope::MC_EVACUATE],
641 current_.scopes[Scope::MC_EVACUATE_CANDIDATES], 668 current_.scopes[Scope::MC_EVACUATE_CANDIDATES],
642 current_.scopes[Scope::MC_EVACUATE_CLEAN_UP], 669 current_.scopes[Scope::MC_EVACUATE_CLEAN_UP],
643 current_.scopes[Scope::MC_EVACUATE_COPY], 670 current_.scopes[Scope::MC_EVACUATE_COPY],
644 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS], 671 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS],
645 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_EVACUATED], 672 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_EVACUATED],
646 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_NEW], 673 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_NEW],
647 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_WEAK], 674 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_WEAK],
648 current_.scopes[Scope::MC_EXTERNAL_PROLOGUE], 675 current_.scopes[Scope::MC_EXTERNAL_PROLOGUE],
649 current_.scopes[Scope::MC_EXTERNAL_EPILOGUE], 676 current_.scopes[Scope::MC_EXTERNAL_EPILOGUE],
650 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_PROLOGUE],
651 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_EPILOGUE],
652 current_.scopes[Scope::EXTERNAL_WEAK_GLOBAL_HANDLES], 677 current_.scopes[Scope::EXTERNAL_WEAK_GLOBAL_HANDLES],
653 current_.scopes[Scope::MC_FINISH], current_.scopes[Scope::MC_MARK], 678 current_.scopes[Scope::MC_FINISH], current_.scopes[Scope::MC_MARK],
654 current_.scopes[Scope::MC_MARK_FINISH_INCREMENTAL], 679 current_.scopes[Scope::MC_MARK_FINISH_INCREMENTAL],
655 current_.scopes[Scope::MC_MARK_PREPARE_CODE_FLUSH], 680 current_.scopes[Scope::MC_MARK_PREPARE_CODE_FLUSH],
656 current_.scopes[Scope::MC_MARK_ROOTS], 681 current_.scopes[Scope::MC_MARK_ROOTS],
657 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE], 682 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE],
658 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_EPHEMERAL], 683 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_EPHEMERAL],
659 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_HANDLES], 684 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_HANDLES],
660 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_ROOTS], 685 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_ROOTS],
661 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_HARMONY], 686 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_HARMONY],
662 current_.scopes[Scope::MC_SWEEP], 687 current_.scopes[Scope::MC_SWEEP],
663 current_.scopes[Scope::MC_SWEEP_CODE], 688 current_.scopes[Scope::MC_SWEEP_CODE],
664 current_.scopes[Scope::MC_SWEEP_MAP], 689 current_.scopes[Scope::MC_SWEEP_MAP],
665 current_.scopes[Scope::MC_SWEEP_OLD], 690 current_.scopes[Scope::MC_SWEEP_OLD],
691 current_.incremental_marking_duration,
666 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE], 692 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE],
693 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_PROLOGUE],
694 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_EPILOGUE],
695 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE_OBJECT_GROUPING],
696 current_.longest_incremental_marking_finalization_step,
697 current_.incremental_marking_finalizaton_steps,
667 current_.incremental_marking_steps, 698 current_.incremental_marking_steps,
668 current_.incremental_marking_duration,
669 current_.longest_incremental_marking_step, 699 current_.longest_incremental_marking_step,
670 cumulative_incremental_marking_finalization_steps_,
671 cumulative_incremental_marking_finalization_duration_,
672 longest_incremental_marking_finalization_step_,
673 IncrementalMarkingSpeedInBytesPerMillisecond(), 700 IncrementalMarkingSpeedInBytesPerMillisecond(),
674 current_.start_object_size, current_.end_object_size, 701 current_.start_object_size, current_.end_object_size,
675 current_.start_holes_size, current_.end_holes_size, 702 current_.start_holes_size, current_.end_holes_size,
676 allocated_since_last_gc, heap_->promoted_objects_size(), 703 allocated_since_last_gc, heap_->promoted_objects_size(),
677 heap_->semi_space_copied_object_size(), 704 heap_->semi_space_copied_object_size(),
678 heap_->nodes_died_in_new_space_, heap_->nodes_copied_in_new_space_, 705 heap_->nodes_died_in_new_space_, heap_->nodes_copied_in_new_space_,
679 heap_->nodes_promoted_, heap_->promotion_ratio_, 706 heap_->nodes_promoted_, heap_->promotion_ratio_,
680 AverageSurvivalRatio(), heap_->promotion_rate_, 707 AverageSurvivalRatio(), heap_->promotion_rate_,
681 heap_->semi_space_copied_rate_, 708 heap_->semi_space_copied_rate_,
682 NewSpaceAllocationThroughputInBytesPerMillisecond(), 709 NewSpaceAllocationThroughputInBytesPerMillisecond(),
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 return sum / recorded_survival_ratios_.Count(); 840 return sum / recorded_survival_ratios_.Count();
814 } 841 }
815 842
816 bool GCTracer::SurvivalEventsRecorded() const { 843 bool GCTracer::SurvivalEventsRecorded() const {
817 return recorded_survival_ratios_.Count() > 0; 844 return recorded_survival_ratios_.Count() > 0;
818 } 845 }
819 846
820 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); } 847 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); }
821 } // namespace internal 848 } // namespace internal
822 } // namespace v8 849 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698