Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 |
| OLD | NEW |