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

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

Issue 2273673002: Reland of "[heap] Tracer: Handle incremental marking scopes" (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: GCTracer::ResetForTesting: cover new members Created 4 years, 3 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 cumulative_marking_duration_ = 0.0; 165 cumulative_marking_duration_ = 0.0;
148 cumulative_sweeping_duration_ = 0.0; 166 cumulative_sweeping_duration_ = 0.0;
149 allocation_time_ms_ = 0.0; 167 allocation_time_ms_ = 0.0;
150 new_space_allocation_counter_bytes_ = 0.0; 168 new_space_allocation_counter_bytes_ = 0.0;
151 old_generation_allocation_counter_bytes_ = 0.0; 169 old_generation_allocation_counter_bytes_ = 0.0;
152 allocation_duration_since_gc_ = 0.0; 170 allocation_duration_since_gc_ = 0.0;
153 new_space_allocation_in_bytes_since_gc_ = 0.0; 171 new_space_allocation_in_bytes_since_gc_ = 0.0;
154 old_generation_allocation_in_bytes_since_gc_ = 0.0; 172 old_generation_allocation_in_bytes_since_gc_ = 0.0;
155 combined_mark_compact_speed_cache_ = 0.0; 173 combined_mark_compact_speed_cache_ = 0.0;
156 start_counter_ = 0; 174 start_counter_ = 0;
175 for (int i = 0; i < Scope::NUMBER_OF_INCREMENTAL_SCOPES; i++) {
176 cumulative_incremental_scopes_[i] = 0;
177 }
178 current_ = Event(Event::START, NULL, NULL);
179 current_.end_time = heap_->MonotonicallyIncreasingTimeInMs();
180 previous_ = previous_incremental_mark_compactor_event_ = current_;
157 } 181 }
158 182
159 void GCTracer::Start(GarbageCollector collector, const char* gc_reason, 183 void GCTracer::Start(GarbageCollector collector, const char* gc_reason,
160 const char* collector_reason) { 184 const char* collector_reason) {
161 start_counter_++; 185 start_counter_++;
162 if (start_counter_ != 1) return; 186 if (start_counter_ != 1) return;
163 187
164 previous_ = current_; 188 previous_ = current_;
165 double start_time = heap_->MonotonicallyIncreasingTimeInMs(); 189 double start_time = heap_->MonotonicallyIncreasingTimeInMs();
166 SampleAllocation(start_time, heap_->NewSpaceAllocationCounter(), 190 SampleAllocation(start_time, heap_->NewSpaceAllocationCounter(),
(...skipping 22 matching lines...) Expand all
189 213
190 current_.cumulative_incremental_marking_steps = 214 current_.cumulative_incremental_marking_steps =
191 cumulative_incremental_marking_steps_; 215 cumulative_incremental_marking_steps_;
192 current_.cumulative_incremental_marking_bytes = 216 current_.cumulative_incremental_marking_bytes =
193 cumulative_incremental_marking_bytes_; 217 cumulative_incremental_marking_bytes_;
194 current_.cumulative_incremental_marking_duration = 218 current_.cumulative_incremental_marking_duration =
195 cumulative_incremental_marking_duration_; 219 cumulative_incremental_marking_duration_;
196 current_.cumulative_pure_incremental_marking_duration = 220 current_.cumulative_pure_incremental_marking_duration =
197 cumulative_pure_incremental_marking_duration_; 221 cumulative_pure_incremental_marking_duration_;
198 current_.longest_incremental_marking_step = longest_incremental_marking_step_; 222 current_.longest_incremental_marking_step = longest_incremental_marking_step_;
223 current_.cumulative_incremental_marking_finalization_steps =
224 cumulative_incremental_marking_finalization_steps_;
225 current_.cumulative_incremental_marking_finalizaton_duration =
226 cumulative_incremental_marking_finalization_duration_;
227 current_.longest_incremental_marking_finalization_step =
228 longest_incremental_marking_finalization_step_;
199 229
200 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) { 230 for (int i = 0; i < Scope::NUMBER_OF_SCOPES; i++) {
201 current_.scopes[i] = 0; 231 current_.scopes[i] = 0;
202 } 232 }
233
203 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB); 234 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB);
204 int used_memory = static_cast<int>(current_.start_object_size / KB); 235 int used_memory = static_cast<int>(current_.start_object_size / KB);
205 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample( 236 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample(
206 start_time, committed_memory); 237 start_time, committed_memory);
207 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample( 238 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample(
208 start_time, used_memory); 239 start_time, used_memory);
209 // TODO(cbruni): remove once we fully moved to a trace-based system. 240 // TODO(cbruni): remove once we fully moved to a trace-based system.
210 if (FLAG_runtime_call_stats) { 241 if (FLAG_runtime_call_stats) {
211 RuntimeCallStats::Enter(heap_->isolate(), &timer_, &RuntimeCallStats::GC); 242 RuntimeCallStats::Enter(heap_->isolate(), &timer_, &RuntimeCallStats::GC);
212 } 243 }
213 } 244 }
214 245
215 void GCTracer::Stop(GarbageCollector collector) { 246 void GCTracer::Stop(GarbageCollector collector) {
216 start_counter_--; 247 start_counter_--;
217 if (start_counter_ != 0) { 248 if (start_counter_ != 0) {
218 Output("[Finished reentrant %s during %s.]\n", 249 Output("[Finished reentrant %s during %s.]\n",
219 collector == SCAVENGER ? "Scavenge" : "Mark-sweep", 250 collector == SCAVENGER ? "Scavenge" : "Mark-sweep",
220 current_.TypeName(false)); 251 current_.TypeName(false));
221 return; 252 return;
222 } 253 }
223 254
224 DCHECK(start_counter_ >= 0); 255 DCHECK(start_counter_ >= 0);
225 DCHECK((collector == SCAVENGER && current_.type == Event::SCAVENGER) || 256 DCHECK((collector == SCAVENGER && current_.type == Event::SCAVENGER) ||
226 (collector == MARK_COMPACTOR && 257 (collector == MARK_COMPACTOR &&
227 (current_.type == Event::MARK_COMPACTOR || 258 (current_.type == Event::MARK_COMPACTOR ||
228 current_.type == Event::INCREMENTAL_MARK_COMPACTOR))); 259 current_.type == Event::INCREMENTAL_MARK_COMPACTOR)));
229 260
261 for (int i = Scope::FIRST_INCREMENTAL_SCOPE;
262 i <= Scope::LAST_INCREMENTAL_SCOPE; i++) {
263 current_.cumulative_incremental_scopes[i] =
264 cumulative_incremental_scopes_[i];
265 }
266
230 current_.end_time = heap_->MonotonicallyIncreasingTimeInMs(); 267 current_.end_time = heap_->MonotonicallyIncreasingTimeInMs();
231 current_.end_object_size = heap_->SizeOfObjects(); 268 current_.end_object_size = heap_->SizeOfObjects();
232 current_.end_memory_size = heap_->memory_allocator()->Size(); 269 current_.end_memory_size = heap_->memory_allocator()->Size();
233 current_.end_holes_size = CountTotalHolesSize(heap_); 270 current_.end_holes_size = CountTotalHolesSize(heap_);
234 current_.survived_new_space_object_size = heap_->SurvivedNewSpaceObjectSize(); 271 current_.survived_new_space_object_size = heap_->SurvivedNewSpaceObjectSize();
235 272
236 AddAllocation(current_.end_time); 273 AddAllocation(current_.end_time);
237 274
238 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB); 275 int committed_memory = static_cast<int>(heap_->CommittedMemory() / KB);
239 int used_memory = static_cast<int>(current_.end_object_size / KB); 276 int used_memory = static_cast<int>(current_.end_object_size / KB);
240 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample( 277 heap_->isolate()->counters()->aggregated_memory_heap_committed()->AddSample(
241 current_.end_time, committed_memory); 278 current_.end_time, committed_memory);
242 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample( 279 heap_->isolate()->counters()->aggregated_memory_heap_used()->AddSample(
243 current_.end_time, used_memory); 280 current_.end_time, used_memory);
244 281
245 double duration = current_.end_time - current_.start_time; 282 double duration = current_.end_time - current_.start_time;
283
284 const Event* baseline = nullptr;
246 if (current_.type == Event::SCAVENGER) { 285 if (current_.type == Event::SCAVENGER) {
247 current_.incremental_marking_steps = 286 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( 287 recorded_scavenges_total_.Push(
260 MakeBytesAndDuration(current_.new_space_object_size, duration)); 288 MakeBytesAndDuration(current_.new_space_object_size, duration));
261 recorded_scavenges_survived_.Push(MakeBytesAndDuration( 289 recorded_scavenges_survived_.Push(MakeBytesAndDuration(
262 current_.survived_new_space_object_size, duration)); 290 current_.survived_new_space_object_size, duration));
263 } else if (current_.type == Event::INCREMENTAL_MARK_COMPACTOR) { 291 } else if (current_.type == Event::INCREMENTAL_MARK_COMPACTOR) {
264 current_.incremental_marking_steps = 292 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; 293 longest_incremental_marking_step_ = 0.0;
294 longest_incremental_marking_finalization_step_ = 0.0;
281 recorded_incremental_marking_steps_.Push( 295 recorded_incremental_marking_steps_.Push(
282 MakeBytesAndDuration(current_.incremental_marking_bytes, 296 MakeBytesAndDuration(current_.incremental_marking_bytes,
283 current_.pure_incremental_marking_duration)); 297 current_.pure_incremental_marking_duration));
284 recorded_incremental_mark_compacts_.Push( 298 recorded_incremental_mark_compacts_.Push(
285 MakeBytesAndDuration(current_.start_object_size, duration)); 299 MakeBytesAndDuration(current_.start_object_size, duration));
286 combined_mark_compact_speed_cache_ = 0.0; 300 combined_mark_compact_speed_cache_ = 0.0;
287 } else { 301 } else {
288 DCHECK(current_.incremental_marking_bytes == 0); 302 DCHECK(current_.incremental_marking_bytes == 0);
289 DCHECK(current_.incremental_marking_duration == 0); 303 DCHECK(current_.incremental_marking_duration == 0);
290 DCHECK(current_.pure_incremental_marking_duration == 0); 304 DCHECK(current_.pure_incremental_marking_duration == 0);
291 longest_incremental_marking_step_ = 0.0; 305 longest_incremental_marking_step_ = 0.0;
306 longest_incremental_marking_finalization_step_ = 0.0;
292 recorded_mark_compacts_.Push( 307 recorded_mark_compacts_.Push(
293 MakeBytesAndDuration(current_.start_object_size, duration)); 308 MakeBytesAndDuration(current_.start_object_size, duration));
294 combined_mark_compact_speed_cache_ = 0.0; 309 combined_mark_compact_speed_cache_ = 0.0;
295 } 310 }
296 311
297 // TODO(ernstm): move the code below out of GCTracer. 312 if (baseline != nullptr) {
313 current_.incremental_marking_steps =
314 current_.cumulative_incremental_marking_steps -
315 baseline->cumulative_incremental_marking_steps;
316 current_.incremental_marking_bytes =
317 current_.cumulative_incremental_marking_bytes -
318 baseline->cumulative_incremental_marking_bytes;
319 current_.incremental_marking_duration =
320 current_.cumulative_incremental_marking_duration -
321 baseline->cumulative_incremental_marking_duration;
322 current_.pure_incremental_marking_duration =
323 current_.cumulative_pure_incremental_marking_duration -
324 baseline->cumulative_pure_incremental_marking_duration;
325 current_.incremental_marking_finalizaton_steps =
326 current_.cumulative_incremental_marking_finalization_steps -
327 baseline->cumulative_incremental_marking_finalization_steps;
328 current_.incremental_marking_finalization_duration =
329 current_.cumulative_incremental_marking_finalizaton_duration -
330 baseline->cumulative_incremental_marking_finalizaton_duration;
331 for (int i = Scope::FIRST_INCREMENTAL_SCOPE;
332 i <= Scope::LAST_INCREMENTAL_SCOPE; i++) {
333 current_.scopes[i] = current_.cumulative_incremental_scopes[i] -
334 baseline->cumulative_incremental_scopes[i];
335 }
336 }
298 337
299 double spent_in_mutator = Max(current_.start_time - previous_.end_time, 0.0); 338 double spent_in_mutator = Max(current_.start_time - previous_.end_time, 0.0);
300
301 heap_->UpdateCumulativeGCStatistics(duration, spent_in_mutator, 339 heap_->UpdateCumulativeGCStatistics(duration, spent_in_mutator,
302 current_.scopes[Scope::MC_MARK]); 340 current_.scopes[Scope::MC_MARK]);
303 341
304 if (current_.type == Event::SCAVENGER && FLAG_trace_gc_ignore_scavenger) 342 if (current_.type == Event::SCAVENGER && FLAG_trace_gc_ignore_scavenger)
305 return; 343 return;
306 344
307 if (FLAG_trace_gc_nvp) 345 if (FLAG_trace_gc_nvp) {
308 PrintNVP(); 346 PrintNVP();
309 else 347 } else {
310 Print(); 348 Print();
349 }
311 350
312 if (FLAG_trace_gc) { 351 if (FLAG_trace_gc) {
313 heap_->PrintShortHeapStatistics(); 352 heap_->PrintShortHeapStatistics();
314 } 353 }
315 354
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. 355 // TODO(cbruni): remove once we fully moved to a trace-based system.
320 if (FLAG_runtime_call_stats) { 356 if (FLAG_runtime_call_stats) {
321 RuntimeCallStats::Leave(heap_->isolate(), &timer_); 357 RuntimeCallStats::Leave(heap_->isolate(), &timer_);
322 } 358 }
323 } 359 }
324 360
325 361
326 void GCTracer::SampleAllocation(double current_ms, 362 void GCTracer::SampleAllocation(double current_ms,
327 size_t new_space_counter_bytes, 363 size_t new_space_counter_bytes,
328 size_t old_generation_counter_bytes) { 364 size_t old_generation_counter_bytes) {
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 "evacuate=%.1f " 604 "evacuate=%.1f "
569 "evacuate.candidates=%.1f " 605 "evacuate.candidates=%.1f "
570 "evacuate.clean_up=%.1f " 606 "evacuate.clean_up=%.1f "
571 "evacuate.copy=%.1f " 607 "evacuate.copy=%.1f "
572 "evacuate.update_pointers=%.1f " 608 "evacuate.update_pointers=%.1f "
573 "evacuate.update_pointers.to_evacuated=%.1f " 609 "evacuate.update_pointers.to_evacuated=%.1f "
574 "evacuate.update_pointers.to_new=%.1f " 610 "evacuate.update_pointers.to_new=%.1f "
575 "evacuate.update_pointers.weak=%.1f " 611 "evacuate.update_pointers.weak=%.1f "
576 "external.mc_prologue=%.1f " 612 "external.mc_prologue=%.1f "
577 "external.mc_epilogue=%.1f " 613 "external.mc_epilogue=%.1f "
578 "external.mc_incremental_prologue=%.1f "
579 "external.mc_incremental_epilogue=%.1f "
580 "external.weak_global_handles=%.1f " 614 "external.weak_global_handles=%.1f "
581 "finish=%.1f " 615 "finish=%.1f "
582 "mark=%.1f " 616 "mark=%.1f "
583 "mark.finish_incremental=%.1f " 617 "mark.finish_incremental=%.1f "
618 "mark.object_grouping=%.1f "
584 "mark.prepare_code_flush=%.1f " 619 "mark.prepare_code_flush=%.1f "
585 "mark.roots=%.1f " 620 "mark.roots=%.1f "
586 "mark.weak_closure=%.1f " 621 "mark.weak_closure=%.1f "
587 "mark.weak_closure.ephemeral=%.1f " 622 "mark.weak_closure.ephemeral=%.1f "
588 "mark.weak_closure.weak_handles=%.1f " 623 "mark.weak_closure.weak_handles=%.1f "
589 "mark.weak_closure.weak_roots=%.1f " 624 "mark.weak_closure.weak_roots=%.1f "
590 "mark.weak_closure.harmony=%.1f " 625 "mark.weak_closure.harmony=%.1f "
626 "mark.wrapper_prologue=%.1f "
627 "mark.wrapper_epilogue=%.1f "
628 "mark.wrapper_tracing=%.1f "
591 "sweep=%.1f " 629 "sweep=%.1f "
592 "sweep.code=%.1f " 630 "sweep.code=%.1f "
593 "sweep.map=%.1f " 631 "sweep.map=%.1f "
594 "sweep.old=%.1f " 632 "sweep.old=%.1f "
595 "incremental_finalize=%.1f " 633 "incremental=%.1f "
596 "steps_count=%d " 634 "incremental.finalize=%.1f "
597 "steps_took=%.1f " 635 "incremental.finalize.external.prologue=%.1f "
598 "longest_step=%.1f " 636 "incremental.finalize.external.epilogue=%.1f "
599 "finalization_steps_count=%d " 637 "incremental.finalize.object_grouping=%.1f "
600 "finalization_steps_took=%.1f " 638 "incremental.wrapper_prologue=%.1f "
601 "finalization_longest_step=%.1f " 639 "incremental.wrapper_tracing=%.1f "
640 "incremental_finalize_longest_step=%.1f "
641 "incremental_finalize_steps_count=%d "
642 "incremental_steps_count=%d "
643 "incremental_longest_step=%.1f "
602 "incremental_marking_throughput=%.f " 644 "incremental_marking_throughput=%.f "
603 "total_size_before=%" V8PRIdPTR 645 "total_size_before=%" V8PRIdPTR
604 " " 646 " "
605 "total_size_after=%" V8PRIdPTR 647 "total_size_after=%" V8PRIdPTR
606 " " 648 " "
607 "holes_size_before=%" V8PRIdPTR 649 "holes_size_before=%" V8PRIdPTR
608 " " 650 " "
609 "holes_size_after=%" V8PRIdPTR 651 "holes_size_after=%" V8PRIdPTR
610 " " 652 " "
611 "allocated=%" V8PRIdPTR 653 "allocated=%" V8PRIdPTR
(...skipping 28 matching lines...) Expand all
640 current_.scopes[Scope::MC_EVACUATE], 682 current_.scopes[Scope::MC_EVACUATE],
641 current_.scopes[Scope::MC_EVACUATE_CANDIDATES], 683 current_.scopes[Scope::MC_EVACUATE_CANDIDATES],
642 current_.scopes[Scope::MC_EVACUATE_CLEAN_UP], 684 current_.scopes[Scope::MC_EVACUATE_CLEAN_UP],
643 current_.scopes[Scope::MC_EVACUATE_COPY], 685 current_.scopes[Scope::MC_EVACUATE_COPY],
644 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS], 686 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS],
645 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_EVACUATED], 687 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_EVACUATED],
646 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_NEW], 688 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_TO_NEW],
647 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_WEAK], 689 current_.scopes[Scope::MC_EVACUATE_UPDATE_POINTERS_WEAK],
648 current_.scopes[Scope::MC_EXTERNAL_PROLOGUE], 690 current_.scopes[Scope::MC_EXTERNAL_PROLOGUE],
649 current_.scopes[Scope::MC_EXTERNAL_EPILOGUE], 691 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], 692 current_.scopes[Scope::EXTERNAL_WEAK_GLOBAL_HANDLES],
653 current_.scopes[Scope::MC_FINISH], current_.scopes[Scope::MC_MARK], 693 current_.scopes[Scope::MC_FINISH], current_.scopes[Scope::MC_MARK],
654 current_.scopes[Scope::MC_MARK_FINISH_INCREMENTAL], 694 current_.scopes[Scope::MC_MARK_FINISH_INCREMENTAL],
695 current_.scopes[Scope::MC_MARK_OBJECT_GROUPING],
655 current_.scopes[Scope::MC_MARK_PREPARE_CODE_FLUSH], 696 current_.scopes[Scope::MC_MARK_PREPARE_CODE_FLUSH],
656 current_.scopes[Scope::MC_MARK_ROOTS], 697 current_.scopes[Scope::MC_MARK_ROOTS],
657 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE], 698 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE],
658 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_EPHEMERAL], 699 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_EPHEMERAL],
659 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_HANDLES], 700 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_HANDLES],
660 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_ROOTS], 701 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_WEAK_ROOTS],
661 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_HARMONY], 702 current_.scopes[Scope::MC_MARK_WEAK_CLOSURE_HARMONY],
703 current_.scopes[Scope::MC_MARK_WRAPPER_PROLOGUE],
704 current_.scopes[Scope::MC_MARK_WRAPPER_EPILOGUE],
705 current_.scopes[Scope::MC_MARK_WRAPPER_TRACING],
662 current_.scopes[Scope::MC_SWEEP], 706 current_.scopes[Scope::MC_SWEEP],
663 current_.scopes[Scope::MC_SWEEP_CODE], 707 current_.scopes[Scope::MC_SWEEP_CODE],
664 current_.scopes[Scope::MC_SWEEP_MAP], 708 current_.scopes[Scope::MC_SWEEP_MAP],
665 current_.scopes[Scope::MC_SWEEP_OLD], 709 current_.scopes[Scope::MC_SWEEP_OLD],
710 current_.incremental_marking_duration,
666 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE], 711 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE],
712 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_PROLOGUE],
713 current_.scopes[Scope::MC_INCREMENTAL_EXTERNAL_EPILOGUE],
714 current_.scopes[Scope::MC_INCREMENTAL_FINALIZE_OBJECT_GROUPING],
715 current_.scopes[Scope::MC_INCREMENTAL_WRAPPER_PROLOGUE],
716 current_.scopes[Scope::MC_INCREMENTAL_WRAPPER_TRACING],
717 current_.longest_incremental_marking_finalization_step,
718 current_.incremental_marking_finalizaton_steps,
667 current_.incremental_marking_steps, 719 current_.incremental_marking_steps,
668 current_.incremental_marking_duration,
669 current_.longest_incremental_marking_step, 720 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(), 721 IncrementalMarkingSpeedInBytesPerMillisecond(),
674 current_.start_object_size, current_.end_object_size, 722 current_.start_object_size, current_.end_object_size,
675 current_.start_holes_size, current_.end_holes_size, 723 current_.start_holes_size, current_.end_holes_size,
676 allocated_since_last_gc, heap_->promoted_objects_size(), 724 allocated_since_last_gc, heap_->promoted_objects_size(),
677 heap_->semi_space_copied_object_size(), 725 heap_->semi_space_copied_object_size(),
678 heap_->nodes_died_in_new_space_, heap_->nodes_copied_in_new_space_, 726 heap_->nodes_died_in_new_space_, heap_->nodes_copied_in_new_space_,
679 heap_->nodes_promoted_, heap_->promotion_ratio_, 727 heap_->nodes_promoted_, heap_->promotion_ratio_,
680 AverageSurvivalRatio(), heap_->promotion_rate_, 728 AverageSurvivalRatio(), heap_->promotion_rate_,
681 heap_->semi_space_copied_rate_, 729 heap_->semi_space_copied_rate_,
682 NewSpaceAllocationThroughputInBytesPerMillisecond(), 730 NewSpaceAllocationThroughputInBytesPerMillisecond(),
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 return sum / recorded_survival_ratios_.Count(); 861 return sum / recorded_survival_ratios_.Count();
814 } 862 }
815 863
816 bool GCTracer::SurvivalEventsRecorded() const { 864 bool GCTracer::SurvivalEventsRecorded() const {
817 return recorded_survival_ratios_.Count() > 0; 865 return recorded_survival_ratios_.Count() > 0;
818 } 866 }
819 867
820 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); } 868 void GCTracer::ResetSurvivalEvents() { recorded_survival_ratios_.Reset(); }
821 } // namespace internal 869 } // namespace internal
822 } // namespace v8 870 } // 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