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

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: Add wrapper tracing epilogue scope 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
« no previous file with comments | « src/heap/gc-tracer.h ('k') | src/heap/incremental-marking.cc » ('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/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 tracer_->AddScopeSample(
37 tracer_->current_.scopes[scope_] += 36 scope_, tracer_->heap_->MonotonicallyIncreasingTimeInMs() - start_time_);
38 tracer_->heap_->MonotonicallyIncreasingTimeInMs() - start_time_;
39 // TODO(cbruni): remove once we fully moved to a trace-based system. 37 // TODO(cbruni): remove once we fully moved to a trace-based system.
40 if (FLAG_runtime_call_stats) { 38 if (FLAG_runtime_call_stats) {
41 RuntimeCallStats::Leave(tracer_->heap_->isolate(), &timer_); 39 RuntimeCallStats::Leave(tracer_->heap_->isolate(), &timer_);
42 } 40 }
43 } 41 }
44 42
43 void GCTracer::AddScopeSample(Scope::ScopeId scope, double duration) {
44 DCHECK(scope < Scope::NUMBER_OF_SCOPES);
45 if (scope >= Scope::FIRST_INCREMENTAL_SCOPE &&
46 scope <= Scope::LAST_INCREMENTAL_SCOPE) {
47 cumulative_incremental_scopes_[scope] += duration;
48 } else {
49 current_.scopes[scope] += duration;
50 }
51 }
52
45 const char* GCTracer::Scope::Name(ScopeId id) { 53 const char* GCTracer::Scope::Name(ScopeId id) {
46 #define CASE(scope) \ 54 #define CASE(scope) \
47 case Scope::scope: \ 55 case Scope::scope: \
48 return "V8.GC_" #scope; 56 return "V8.GC_" #scope;
49 switch (id) { 57 switch (id) {
50 TRACER_SCOPES(CASE) 58 TRACER_SCOPES(CASE)
51 case Scope::NUMBER_OF_SCOPES: 59 case Scope::NUMBER_OF_SCOPES:
52 break; 60 break;
53 } 61 }
54 #undef CASE 62 #undef CASE
55 return "(unknown)"; 63 return "(unknown)";
56 } 64 }
57 65
58 GCTracer::Event::Event(Type type, const char* gc_reason, 66 GCTracer::Event::Event(Type type, const char* gc_reason,
59 const char* collector_reason) 67 const char* collector_reason)
60 : type(type), 68 : type(type),
61 gc_reason(gc_reason), 69 gc_reason(gc_reason),
62 collector_reason(collector_reason), 70 collector_reason(collector_reason),
63 start_time(0.0), 71 start_time(0.0),
64 end_time(0.0), 72 end_time(0.0),
65 reduce_memory(false), 73 reduce_memory(false),
66 start_object_size(0), 74 start_object_size(0),
67 end_object_size(0), 75 end_object_size(0),
68 start_memory_size(0), 76 start_memory_size(0),
69 end_memory_size(0), 77 end_memory_size(0),
70 start_holes_size(0), 78 start_holes_size(0),
71 end_holes_size(0), 79 end_holes_size(0),
80 new_space_object_size(0),
81 survived_new_space_object_size(0),
72 cumulative_incremental_marking_steps(0), 82 cumulative_incremental_marking_steps(0),
73 incremental_marking_steps(0), 83 incremental_marking_steps(0),
74 cumulative_incremental_marking_bytes(0), 84 cumulative_incremental_marking_bytes(0),
75 incremental_marking_bytes(0), 85 incremental_marking_bytes(0),
76 cumulative_incremental_marking_duration(0.0), 86 cumulative_incremental_marking_duration(0.0),
77 incremental_marking_duration(0.0), 87 incremental_marking_duration(0.0),
78 cumulative_pure_incremental_marking_duration(0.0), 88 cumulative_pure_incremental_marking_duration(0.0),
79 pure_incremental_marking_duration(0.0), 89 pure_incremental_marking_duration(0.0),
80 longest_incremental_marking_step(0.0) { 90 longest_incremental_marking_step(0.0),
91 cumulative_incremental_marking_finalization_steps(0),
92 cumulative_incremental_marking_finalizaton_duration(0),
93 longest_incremental_marking_finalization_step(0),
94 incremental_marking_finalizaton_steps(0),
95 incremental_marking_finalization_duration(0) {
96 for (int i = 0; i < Scope::NUMBER_OF_INCREMENTAL_SCOPES; i++) {
97 cumulative_incremental_scopes[i] = 0;
98 }
81 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) { 99 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) {
82 scopes[i] = 0; 100 scopes[i] = 0;
83 } 101 }
84 } 102 }
85 103
86 104
87 const char* GCTracer::Event::TypeName(bool short_name) const { 105 const char* GCTracer::Event::TypeName(bool short_name) const {
88 switch (type) { 106 switch (type) {
89 case SCAVENGER: 107 case SCAVENGER:
90 if (short_name) { 108 if (short_name) {
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 207
190 current_.cumulative_incremental_marking_steps = 208 current_.cumulative_incremental_marking_steps =
191 cumulative_incremental_marking_steps_; 209 cumulative_incremental_marking_steps_;
192 current_.cumulative_incremental_marking_bytes = 210 current_.cumulative_incremental_marking_bytes =
193 cumulative_incremental_marking_bytes_; 211 cumulative_incremental_marking_bytes_;
194 current_.cumulative_incremental_marking_duration = 212 current_.cumulative_incremental_marking_duration =
195 cumulative_incremental_marking_duration_; 213 cumulative_incremental_marking_duration_;
196 current_.cumulative_pure_incremental_marking_duration = 214 current_.cumulative_pure_incremental_marking_duration =
197 cumulative_pure_incremental_marking_duration_; 215 cumulative_pure_incremental_marking_duration_;
198 current_.longest_incremental_marking_step = longest_incremental_marking_step_; 216 current_.longest_incremental_marking_step = longest_incremental_marking_step_;
217 current_.cumulative_incremental_marking_finalization_steps =
218 cumulative_incremental_marking_finalization_steps_;
219 current_.cumulative_incremental_marking_finalizaton_duration =
220 cumulative_incremental_marking_finalization_duration_;
221 current_.longest_incremental_marking_finalization_step =
222 longest_incremental_marking_finalization_step_;
199 223
200 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) { 224 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) {
201 current_.scopes[i] = 0; 225 current_.scopes[i] = 0;
202 } 226 }
227
203 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB); 228 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB);
204 int used_memory = static_cast<int>(current_.start_object_size / KB); 229 int used_memory = static_cast<int>(current_.start_object_size / KB);
205 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample( 230 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample(
206 start_time, committed_memory); 231 start_time, committed_memory);
207 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample( 232 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample(
208 start_time, used_memory); 233 start_time, used_memory);
209 // TODO(cbruni): remove once we fully moved to a trace-based system. 234 // TODO(cbruni): remove once we fully moved to a trace-based system.
210 if (FLAG_runtime_call_stats) { 235 if (FLAG_runtime_call_stats) {
211 RuntimeCallStats::Enter(heap_->isolate(), &timer_, &RuntimeCallStats::GC); 236 RuntimeCallStats::Enter(heap_->isolate(), &timer_, &RuntimeCallStats::GC);
212 } 237 }
213 } 238 }
214 239
215 void GCTracer::Stop(GarbageCollector collector) { 240 void GCTracer::Stop(GarbageCollector collector) {
216 start_counter_--; 241 start_counter_--;
217 if (start_counter_ != 0) { 242 if (start_counter_ != 0) {
218 Output("[Finished reentrant %s during %s.]\n", 243 Output("[Finished reentrant %s during %s.]\n",
219 collector == SCAVENGER ? "Scavenge" : "Mark-sweep", 244 collector == SCAVENGER ? "Scavenge" : "Mark-sweep",
220 current_.TypeName(false)); 245 current_.TypeName(false));
221 return; 246 return;
222 } 247 }
223 248
224 DCHECK(start_counter_ >= 0); 249 DCHECK(start_counter_ >= 0);
225 DCHECK((collector == SCAVENGER && current_.type == Event::SCAVENGER) || 250 DCHECK((collector == SCAVENGER && current_.type == Event::SCAVENGER) ||
226 (collector == MARK_COMPACTOR && 251 (collector == MARK_COMPACTOR &&
227 (current_.type == Event::MARK_COMPACTOR || 252 (current_.type == Event::MARK_COMPACTOR ||
228 current_.type == Event::INCREMENTAL_MARK_COMPACTOR))); 253 current_.type == Event::INCREMENTAL_MARK_COMPACTOR)));
229 254
255 for (int i = Scope::FIRST_INCREMENTAL_SCOPE;
256 i <= Scope::LAST_INCREMENTAL_SCOPE; i++) {
257 current_.cumulative_incremental_scopes[i] =
258 cumulative_incremental_scopes_[i];
259 }
260
230 current_.end_time = heap_->MonotonicallyIncreasingTimeInMs(); 261 current_.end_time = heap_->MonotonicallyIncreasingTimeInMs();
231 current_.end_object_size = heap_->SizeOfObjects(); 262 current_.end_object_size = heap_->SizeOfObjects();
232 current_.end_memory_size = heap_->memory_allocator()->Size(); 263 current_.end_memory_size = heap_->memory_allocator()->Size();
233 current_.end_holes_size = CountTotalHolesSize(heap_); 264 current_.end_holes_size = CountTotalHolesSize(heap_);
234 current_.survived_new_space_object_size = heap_->SurvivedNewSpaceObjectSize(); 265 current_.survived_new_space_object_size = heap_->SurvivedNewSpaceObjectSize();
235 266
236 AddAllocation(current_.end_time); 267 AddAllocation(current_.end_time);
237 268
238 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB); 269 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB);
239 int used_memory = static_cast<int>(current_.end_object_size / KB); 270 int used_memory = static_cast<int>(current_.end_object_size / KB);
240 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample( 271 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample(
241 current_.end_time, committed_memory); 272 current_.end_time, committed_memory);
242 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample( 273 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample(
243 current_.end_time, used_memory); 274 current_.end_time, used_memory);
244 275
245 double duration = current_.end_time - current_.start_time; 276 double duration = current_.end_time - current_.start_time;
277
278 const Event* baseline = nullptr;
246 if (current_.type == Event::SCAVENGER) { 279 if (current_.type == Event::SCAVENGER) {
247 current_.incremental_marking_steps = 280 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( 281 recorded_scavenges_total_.Push(
260 MakeBytesAndDuration(current_.new_space_object_size, duration)); 282 MakeBytesAndDuration(current_.new_space_object_size, duration));
261 recorded_scavenges_survived_.Push(MakeBytesAndDuration( 283 recorded_scavenges_survived_.Push(MakeBytesAndDuration(
262 current_.survived_new_space_object_size, duration)); 284 current_.survived_new_space_object_size, duration));
263 } else if (current_.type == Event::INCREMENTAL_MARK_COMPACTOR) { 285 } else if (current_.type == Event::INCREMENTAL_MARK_COMPACTOR) {
264 current_.incremental_marking_steps = 286 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; 287 longest_incremental_marking_step_ = 0.0;
288 longest_incremental_marking_finalization_step_ = 0.0;
281 recorded_incremental_marking_steps_.Push( 289 recorded_incremental_marking_steps_.Push(
282 MakeBytesAndDuration(current_.incremental_marking_bytes, 290 MakeBytesAndDuration(current_.incremental_marking_bytes,
283 current_.pure_incremental_marking_duration)); 291 current_.pure_incremental_marking_duration));
284 recorded_incremental_mark_compacts_.Push( 292 recorded_incremental_mark_compacts_.Push(
285 MakeBytesAndDuration(current_.start_object_size, duration)); 293 MakeBytesAndDuration(current_.start_object_size, duration));
286 combined_mark_compact_speed_cache_ = 0.0; 294 combined_mark_compact_speed_cache_ = 0.0;
287 } else { 295 } else {
288 DCHECK(current_.incremental_marking_bytes == 0); 296 DCHECK(current_.incremental_marking_bytes == 0);
289 DCHECK(current_.incremental_marking_duration == 0); 297 DCHECK(current_.incremental_marking_duration == 0);
290 DCHECK(current_.pure_incremental_marking_duration == 0); 298 DCHECK(current_.pure_incremental_marking_duration == 0);
291 longest_incremental_marking_step_ = 0.0; 299 longest_incremental_marking_step_ = 0.0;
300 longest_incremental_marking_finalization_step_ = 0.0;
292 recorded_mark_compacts_.Push( 301 recorded_mark_compacts_.Push(
293 MakeBytesAndDuration(current_.start_object_size, duration)); 302 MakeBytesAndDuration(current_.start_object_size, duration));
294 combined_mark_compact_speed_cache_ = 0.0; 303 combined_mark_compact_speed_cache_ = 0.0;
295 } 304 }
296 305
297 // TODO(ernstm): move the code below out of GCTracer. 306 if (baseline != nullptr) {
307 current_.incremental_marking_steps =
308 current_.cumulative_incremental_marking_steps -
309 baseline->cumulative_incremental_marking_steps;
310 current_.incremental_marking_bytes =
311 current_.cumulative_incremental_marking_bytes -
312 baseline->cumulative_incremental_marking_bytes;
313 current_.incremental_marking_duration =
314 current_.cumulative_incremental_marking_duration -
315 baseline->cumulative_incremental_marking_duration;
316 current_.pure_incremental_marking_duration =
317 current_.cumulative_pure_incremental_marking_duration -
318 baseline->cumulative_pure_incremental_marking_duration;
319 current_.incremental_marking_finalizaton_steps =
320 current_.cumulative_incremental_marking_finalization_steps -
321 baseline->cumulative_incremental_marking_finalization_steps;
322 current_.incremental_marking_finalization_duration =
323 current_.cumulative_incremental_marking_finalizaton_duration -
324 baseline->cumulative_incremental_marking_finalizaton_duration;
325 for (int i = Scope::FIRST_INCREMENTAL_SCOPE;
326 i <= Scope::LAST_INCREMENTAL_SCOPE; i++) {
327 current_.scopes[i] = current_.cumulative_incremental_scopes[i] -
328 baseline->cumulative_incremental_scopes[i];
329 }
330 }
298 331
299 double spent_in_mutator = Max(current_.start_time - previous_.end_time, 0.0); 332 double spent_in_mutator = Max(current_.start_time - previous_.end_time, 0.0);
300
301 heap_->UpdateCumulativeGCStatistics(duration, spent_in_mutator, 333 heap_->UpdateCumulativeGCStatistics(duration, spent_in_mutator,
302 current_.scopes[Scope::MC_MARK]); 334 current_.scopes[Scope::MC_MARK]);
303 335
304 if (current_.type == Event::SCAVENGER && FLAG_trace_gc_ignore_scavenger) 336 if (current_.type == Event::SCAVENGER && FLAG_trace_gc_ignore_scavenger)
305 return; 337 return;
306 338
307 if (FLAG_trace_gc_nvp) 339 if (FLAG_trace_gc_nvp) {
308 PrintNVP(); 340 PrintNVP();
309 else 341 } else {
310 Print(); 342 Print();
343 }
311 344
312 if (FLAG_trace_gc) { 345 if (FLAG_trace_gc) {
313 heap_->PrintShortHeapStatistics(); 346 heap_->PrintShortHeapStatistics();
314 } 347 }
315 348
316 longest_incremental_marking_finalization_step_ = 0.0;
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. 349 // TODO(cbruni): remove once we fully moved to a trace-based system.
320 if (FLAG_runtime_call_stats) { 350 if (FLAG_runtime_call_stats) {
321 RuntimeCallStats::Leave(heap_->isolate(), &timer_); 351 RuntimeCallStats::Leave(heap_->isolate(), &timer_);
322 } 352 }
323 } 353 }
324 354
325 355
326 void GCTracer::SampleAllocation(double current_ms, 356 void GCTracer::SampleAllocation(double current_ms,
327 size_t new_space_counter_bytes, 357 size_t new_space_counter_bytes,
328 size_t old_generation_counter_bytes) { 358 size_t old_generation_counter_bytes) {
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 "evacuate=%.1f " 598 "evacuate=%.1f "
569 "evacuate.candidates=%.1f " 599 "evacuate.candidates=%.1f "
570 "evacuate.clean_up=%.1f " 600 "evacuate.clean_up=%.1f "
571 "evacuate.copy=%.1f " 601 "evacuate.copy=%.1f "
572 "evacuate.update_pointers=%.1f " 602 "evacuate.update_pointers=%.1f "
573 "evacuate.update_pointers.to_evacuated=%.1f " 603 "evacuate.update_pointers.to_evacuated=%.1f "
574 "evacuate.update_pointers.to_new=%.1f " 604 "evacuate.update_pointers.to_new=%.1f "
575 "evacuate.update_pointers.weak=%.1f " 605 "evacuate.update_pointers.weak=%.1f "
576 "external.mc_prologue=%.1f " 606 "external.mc_prologue=%.1f "
577 "external.mc_epilogue=%.1f " 607 "external.mc_epilogue=%.1f "
578 "external.mc_incremental_prologue=%.1f "
579 "external.mc_incremental_epilogue=%.1f "
580 "external.weak_global_handles=%.1f " 608 "external.weak_global_handles=%.1f "
581 "finish=%.1f " 609 "finish=%.1f "
582 "mark=%.1f " 610 "mark=%.1f "
583 "mark.finish_incremental=%.1f " 611 "mark.finish_incremental=%.1f "
612 "mark.object_grouping=%.1f "
584 "mark.prepare_code_flush=%.1f " 613 "mark.prepare_code_flush=%.1f "
585 "mark.roots=%.1f " 614 "mark.roots=%.1f "
586 "mark.weak_closure=%.1f " 615 "mark.weak_closure=%.1f "
587 "mark.weak_closure.ephemeral=%.1f " 616 "mark.weak_closure.ephemeral=%.1f "
588 "mark.weak_closure.weak_handles=%.1f " 617 "mark.weak_closure.weak_handles=%.1f "
589 "mark.weak_closure.weak_roots=%.1f " 618 "mark.weak_closure.weak_roots=%.1f "
590 "mark.weak_closure.harmony=%.1f " 619 "mark.weak_closure.harmony=%.1f "
620 "mark.wrapper_prologue=%.1f "
621 "mark.wrapper_epilogue=%.1f "
622 "mark.wrapper_tracing=%.1f "
591 "sweep=%.1f " 623 "sweep=%.1f "
592 "sweep.code=%.1f " 624 "sweep.code=%.1f "
593 "sweep.map=%.1f " 625 "sweep.map=%.1f "
594 "sweep.old=%.1f " 626 "sweep.old=%.1f "
595 "incremental_finalize=%.1f " 627 "incremental=%.1f "
596 "steps_count=%d " 628 "incremental.finalize=%.1f "
597 "steps_took=%.1f " 629 "incremental.finalize.external.prologue=%.1f "
598 "longest_step=%.1f " 630 "incremental.finalize.external.epilogue=%.1f "
599 "finalization_steps_count=%d " 631 "incremental.finalize.object_grouping=%.1f "
600 "finalization_steps_took=%.1f " 632 "incremental.wrapper_prologue=%.1f "
601 "finalization_longest_step=%.1f " 633 "incremental.wrapper_tracing=%.1f "
634 "incremental_finalize_longest_step=%.1f "
635 "incremental_finalize_steps_count=%d "
636 "incremental_steps_count=%d "
637 "incremental_longest_step=%.1f "
602 "incremental_marking_throughput=%.f " 638 "incremental_marking_throughput=%.f "
603 "total_size_before=%" V8PRIdPTR 639 "total_size_before=%" V8PRIdPTR
604 " " 640 " "
605 "total_size_after=%" V8PRIdPTR 641 "total_size_after=%" V8PRIdPTR
606 " " 642 " "
607 "holes_size_before=%" V8PRIdPTR 643 "holes_size_before=%" V8PRIdPTR
608 " " 644 " "
609 "holes_size_after=%" V8PRIdPTR 645 "holes_size_after=%" V8PRIdPTR
610 " " 646 " "
611 "allocated=%" V8PRIdPTR 647 "allocated=%" V8PRIdPTR
(...skipping 28 matching lines...) Expand all
640 current_.scopes[Scope::MC_EVACUATE], 676 current_.scopes[Scope::MC_EVACUATE],
641 current_.scopes[Scope::MC_EVACUATE_CANDIDATES], 677 current_.scopes[Scope::MC_EVACUATE_CANDIDATES],
642 current_.scopes[Scope::MC_EVACUATE_CLEAN_UP], 678 current_.scopes[Scope::MC_EVACUATE_CLEAN_UP],
643 current_.scopes[Scope::MC_EVACUATE_COPY], 679 current_.scopes[Scope::MC_EVACUATE_COPY],
644 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS], 680 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS],
645 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_EVACUATED], 681 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_EVACUATED],
646 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_NEW], 682 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_NEW],
647 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_WEAK], 683 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_WEAK],
648 current_.scopes[Scope::MC_EXTERNAL_PROLOGUE], 684 current_.scopes[Scope::MC_EXTERNAL_PROLOGUE],
649 current_.scopes[Scope::MC_EXTERNAL_EPILOGUE], 685 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], 686 current_.scopes[Scope::EXTERNAL_WEAK_GLOBAL_HANDLES],
653 current_.scopes[Scope::MC_FINISH], current_.scopes[Scope::MC_MARK], 687 current_.scopes[Scope::MC_FINISH], current_.scopes[Scope::MC_MARK],
654 current_.scopes[Scope::MC_MARK_FINISH_INCREMENTAL], 688 current_.scopes[Scope::MC_MARK_FINISH_INCREMENTAL],
689 current_.scopes[Scope::MC_MARK_OBJECT_GROUPING],
655 current_.scopes[Scope::MC_MARK_PREPARE_CODE_FLUSH], 690 current_.scopes[Scope::MC_MARK_PREPARE_CODE_FLUSH],
656 current_.scopes[Scope::MC_MARK_ROOTS], 691 current_.scopes[Scope::MC_MARK_ROOTS],
657 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE], 692 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE],
658 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_EPHEMERAL], 693 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_EPHEMERAL],
659 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_HANDLES], 694 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_HANDLES],
660 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_ROOTS], 695 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_ROOTS],
661 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_HARMONY], 696 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_HARMONY],
697 current_.scopes[Scope::MC_MARK_WRAPPER_PROLOGUE],
698 current_.scopes[Scope::MC_MARK_WRAPPER_EPILOGUE],
699 current_.scopes[Scope::MC_MARK_WRAPPER_TRACING],
662 current_.scopes[Scope::MC_SWEEP], 700 current_.scopes[Scope::MC_SWEEP],
663 current_.scopes[Scope::MC_SWEEP_CODE], 701 current_.scopes[Scope::MC_SWEEP_CODE],
664 current_.scopes[Scope::MC_SWEEP_MAP], 702 current_.scopes[Scope::MC_SWEEP_MAP],
665 current_.scopes[Scope::MC_SWEEP_OLD], 703 current_.scopes[Scope::MC_SWEEP_OLD],
704 current_.incremental_marking_duration,
666 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE], 705 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE],
706 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_PROLOGUE],
707 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_EPILOGUE],
708 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE_OBJECT_GROUPING],
709 current_.scopes[Scope::MC_INCREMENTAL_WRAPPER_PROLOGUE],
710 current_.scopes[Scope::MC_INCREMENTAL_WRAPPER_TRACING],
711 current_.longest_incremental_marking_finalization_step,
712 current_.incremental_marking_finalizaton_steps,
667 current_.incremental_marking_steps, 713 current_.incremental_marking_steps,
668 current_.incremental_marking_duration,
669 current_.longest_incremental_marking_step, 714 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(), 715 IncrementalMarkingSpeedInBytesPerMillisecond(),
674 current_.start_object_size, current_.end_object_size, 716 current_.start_object_size, current_.end_object_size,
675 current_.start_holes_size, current_.end_holes_size, 717 current_.start_holes_size, current_.end_holes_size,
676 allocated_since_last_gc, heap_->promoted_objects_size(), 718 allocated_since_last_gc, heap_->promoted_objects_size(),
677 heap_->semi_space_copied_object_size(), 719 heap_->semi_space_copied_object_size(),
678 heap_->nodes_died_in_new_space_, heap_->nodes_copied_in_new_space_, 720 heap_->nodes_died_in_new_space_, heap_->nodes_copied_in_new_space_,
679 heap_->nodes_promoted_, heap_->promotion_ratio_, 721 heap_->nodes_promoted_, heap_->promotion_ratio_,
680 AverageSurvivalRatio(), heap_->promotion_rate_, 722 AverageSurvivalRatio(), heap_->promotion_rate_,
681 heap_->semi_space_copied_rate_, 723 heap_->semi_space_copied_rate_,
682 NewSpaceAllocationThroughputInBytesPerMillisecond(), 724 NewSpaceAllocationThroughputInBytesPerMillisecond(),
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 return sum / recorded_survival_ratios_.Count(); 855 return sum / recorded_survival_ratios_.Count();
814 } 856 }
815 857
816 bool GCTracer::SurvivalEventsRecorded() const { 858 bool GCTracer::SurvivalEventsRecorded() const {
817 return recorded_survival_ratios_.Count() > 0; 859 return recorded_survival_ratios_.Count() > 0;
818 } 860 }
819 861
820 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); } 862 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); }
821 } // namespace internal 863 } // namespace internal
822 } // namespace v8 864 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/gc-tracer.h ('k') | src/heap/incremental-marking.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698