Index: src/heap/gc-tracer.cc |
diff --git a/src/heap/gc-tracer.cc b/src/heap/gc-tracer.cc |
index 8fce990acf969a98cdae2e9db7b1408c8e2f1f92..1b94ecac96f53f6d001d4b669c4aacaee699ee87 100644 |
--- a/src/heap/gc-tracer.cc |
+++ b/src/heap/gc-tracer.cc |
@@ -393,105 +393,169 @@ void GCTracer::Print() const { |
void GCTracer::PrintNVP() const { |
- PrintIsolate(heap_->isolate(), "[I:%p] %8.0f ms: ", heap_->isolate(), |
- heap_->isolate()->time_millis_since_init()); |
- |
double duration = current_.end_time - current_.start_time; |
double spent_in_mutator = current_.start_time - previous_.end_time; |
- |
- PrintF("pause=%.1f ", duration); |
- PrintF("mutator=%.1f ", spent_in_mutator); |
- PrintF("gc=%s ", current_.TypeName(true)); |
- PrintF("reduce_memory=%d ", current_.reduce_memory); |
+ intptr_t allocated_since_last_gc = |
+ current_.start_object_size - previous_.end_object_size; |
switch (current_.type) { |
case Event::SCAVENGER: |
- PrintF("scavenge=%.2f ", current_.scopes[Scope::SCAVENGER_SCAVENGE]); |
- PrintF("old_new=%.2f ", |
- current_.scopes[Scope::SCAVENGER_OLD_TO_NEW_POINTERS]); |
- PrintF("weak=%.2f ", current_.scopes[Scope::SCAVENGER_WEAK]); |
- PrintF("roots=%.2f ", current_.scopes[Scope::SCAVENGER_ROOTS]); |
- PrintF("code=%.2f ", |
- current_.scopes[Scope::SCAVENGER_CODE_FLUSH_CANDIDATES]); |
- PrintF("semispace=%.2f ", current_.scopes[Scope::SCAVENGER_SEMISPACE]); |
- PrintF("object_groups=%.2f ", |
- current_.scopes[Scope::SCAVENGER_OBJECT_GROUPS]); |
- PrintF("steps_count=%d ", current_.incremental_marking_steps); |
- PrintF("steps_took=%.1f ", current_.incremental_marking_duration); |
- PrintF("scavenge_throughput=%" V8_PTR_PREFIX "d ", |
- ScavengeSpeedInBytesPerMillisecond()); |
+ PrintIsolate(heap_->isolate(), |
+ "[I:%p] %8.0f ms: " |
+ "pause=%.1f " |
+ "mutator=%.1f " |
+ "gc=%s " |
+ "reduce_memory=%d " |
+ "scavenge=%.2f " |
+ "old_new=%.2f " |
+ "weak=%.2f " |
+ "roots=%.2f " |
+ "code=%.2f " |
+ "semispace=%.2f " |
+ "object_groups=%.2f " |
+ "steps_count=%d " |
+ "steps_took=%.1f " |
+ "scavenge_throughput=%" V8_PTR_PREFIX "d " |
+ "total_size_before=%" V8_PTR_PREFIX "d " |
+ "total_size_after=%" V8_PTR_PREFIX "d " |
+ "holes_size_before=%" V8_PTR_PREFIX "d " |
+ "holes_size_after=%" V8_PTR_PREFIX "d " |
+ "allocated=%" V8_PTR_PREFIX "d " |
+ "promoted=%" V8_PTR_PREFIX "d " |
+ "semi_space_copied=%" V8_PTR_PREFIX "d " |
+ "nodes_died_in_new=%d " |
+ "nodes_copied_in_new=%d " |
+ "nodes_promoted=%d " |
+ "promotion_ratio=%.1f%% " |
+ "average_survival_ratio=%.1f%% " |
+ "promotion_rate=%.1f%% " |
+ "semi_space_copy_rate=%.1f%% " |
+ "new_space_allocation_throughput=%" V8_PTR_PREFIX "d " |
+ "context_disposal_rate=%.1f\n", |
+ heap_->isolate(), |
+ heap_->isolate()->time_millis_since_init(), |
+ duration, |
+ spent_in_mutator, |
+ current_.TypeName(true), |
+ current_.reduce_memory, |
+ current_.scopes[Scope::SCAVENGER_SCAVENGE], |
+ current_.scopes[Scope::SCAVENGER_OLD_TO_NEW_POINTERS], |
+ current_.scopes[Scope::SCAVENGER_WEAK], |
+ current_.scopes[Scope::SCAVENGER_ROOTS], |
+ current_.scopes[Scope::SCAVENGER_CODE_FLUSH_CANDIDATES], |
+ current_.scopes[Scope::SCAVENGER_SEMISPACE], |
+ current_.scopes[Scope::SCAVENGER_OBJECT_GROUPS], |
+ current_.incremental_marking_steps, |
+ current_.incremental_marking_duration, |
+ ScavengeSpeedInBytesPerMillisecond(), |
+ current_.start_object_size, current_.end_object_size, |
+ current_.start_holes_size, current_.end_holes_size, |
+ allocated_since_last_gc, heap_->promoted_objects_size(), |
+ heap_->semi_space_copied_object_size(), |
+ heap_->nodes_died_in_new_space_, |
+ heap_->nodes_copied_in_new_space_, heap_->nodes_promoted_, |
+ heap_->promotion_ratio_, AverageSurvivalRatio(), |
+ heap_->promotion_rate_, heap_->semi_space_copied_rate_, |
+ NewSpaceAllocationThroughputInBytesPerMillisecond(), |
+ ContextDisposalRateInMilliseconds()); |
break; |
case Event::MARK_COMPACTOR: |
case Event::INCREMENTAL_MARK_COMPACTOR: |
- PrintF("external=%.1f ", current_.scopes[Scope::EXTERNAL]); |
- PrintF("mark=%.1f ", current_.scopes[Scope::MC_MARK]); |
- PrintF("sweep=%.2f ", current_.scopes[Scope::MC_SWEEP]); |
- PrintF("sweepns=%.2f ", current_.scopes[Scope::MC_SWEEP_NEWSPACE]); |
- PrintF("sweepos=%.2f ", current_.scopes[Scope::MC_SWEEP_OLDSPACE]); |
- PrintF("sweepcode=%.2f ", current_.scopes[Scope::MC_SWEEP_CODE]); |
- PrintF("sweepcell=%.2f ", current_.scopes[Scope::MC_SWEEP_CELL]); |
- PrintF("sweepmap=%.2f ", current_.scopes[Scope::MC_SWEEP_MAP]); |
- PrintF("evacuate=%.1f ", current_.scopes[Scope::MC_EVACUATE_PAGES]); |
- PrintF("new_new=%.1f ", |
- current_.scopes[Scope::MC_UPDATE_NEW_TO_NEW_POINTERS]); |
- PrintF("root_new=%.1f ", |
- current_.scopes[Scope::MC_UPDATE_ROOT_TO_NEW_POINTERS]); |
- PrintF("old_new=%.1f ", |
- current_.scopes[Scope::MC_UPDATE_OLD_TO_NEW_POINTERS]); |
- PrintF("compaction_ptrs=%.1f ", |
- current_.scopes[Scope::MC_UPDATE_POINTERS_TO_EVACUATED]); |
- PrintF("intracompaction_ptrs=%.1f ", |
- current_.scopes[Scope::MC_UPDATE_POINTERS_BETWEEN_EVACUATED]); |
- PrintF("misc_compaction=%.1f ", |
- current_.scopes[Scope::MC_UPDATE_MISC_POINTERS]); |
- PrintF("weak_closure=%.1f ", current_.scopes[Scope::MC_WEAKCLOSURE]); |
- PrintF("inc_weak_closure=%.1f ", |
- current_.scopes[Scope::MC_INCREMENTAL_WEAKCLOSURE]); |
- PrintF("weakcollection_process=%.1f ", |
- current_.scopes[Scope::MC_WEAKCOLLECTION_PROCESS]); |
- PrintF("weakcollection_clear=%.1f ", |
- current_.scopes[Scope::MC_WEAKCOLLECTION_CLEAR]); |
- PrintF("weakcollection_abort=%.1f ", |
- current_.scopes[Scope::MC_WEAKCOLLECTION_ABORT]); |
- PrintF("weakcells=%.1f ", current_.scopes[Scope::MC_WEAKCELL]); |
- PrintF("nonlive_refs=%.1f ", |
- current_.scopes[Scope::MC_NONLIVEREFERENCES]); |
- |
- PrintF("steps_count=%d ", current_.incremental_marking_steps); |
- PrintF("steps_took=%.1f ", current_.incremental_marking_duration); |
- PrintF("longest_step=%.1f ", current_.longest_incremental_marking_step); |
- PrintF("incremental_marking_throughput=%" V8_PTR_PREFIX "d ", |
- IncrementalMarkingSpeedInBytesPerMillisecond()); |
+ PrintIsolate(heap_->isolate(), |
+ "[I:%p] %8.0f ms: " |
+ "pause=%.1f " |
+ "mutator=%.1f " |
+ "gc=%s " |
+ "reduce_memory=%d " |
+ "external=%.1f " |
+ "mark=%.1f " |
+ "sweep=%.2f " |
+ "sweepns=%.2f " |
+ "sweepos=%.2f " |
+ "sweepcode=%.2f " |
+ "sweepcell=%.2f " |
+ "sweepmap=%.2f " |
+ "evacuate=%.1f " |
+ "new_new=%.1f " |
+ "root_new=%.1f " |
+ "old_new=%.1f " |
+ "compaction_ptrs=%.1f " |
+ "intracompaction_ptrs=%.1f " |
+ "misc_compaction=%.1f " |
+ "weak_closure=%.1f " |
+ "inc_weak_closure=%.1f " |
+ "weakcollection_process=%.1f " |
+ "weakcollection_clear=%.1f " |
+ "weakcollection_abort=%.1f " |
+ "weakcells=%.1f " |
+ "nonlive_refs=%.1f " |
+ "steps_count=%d " |
+ "steps_took=%.1f " |
+ "longest_step=%.1f " |
+ "incremental_marking_throughput=%" V8_PTR_PREFIX "d " |
+ "total_size_before=%" V8_PTR_PREFIX "d " |
+ "total_size_after=%" V8_PTR_PREFIX "d " |
+ "holes_size_before=%" V8_PTR_PREFIX "d " |
+ "holes_size_after=%" V8_PTR_PREFIX "d " |
+ "allocated=%" V8_PTR_PREFIX "d " |
+ "promoted=%" V8_PTR_PREFIX "d " |
+ "semi_space_copied=%" V8_PTR_PREFIX "d " |
+ "nodes_died_in_new=%d " |
+ "nodes_copied_in_new=%d " |
+ "nodes_promoted=%d " |
+ "promotion_ratio=%.1f%% " |
+ "average_survival_ratio=%.1f%% " |
+ "promotion_rate=%.1f%% " |
+ "semi_space_copy_rate=%.1f%% " |
+ "new_space_allocation_throughput=%" V8_PTR_PREFIX "d " |
+ "context_disposal_rate=%.1f\n", |
+ heap_->isolate(), |
+ heap_->isolate()->time_millis_since_init(), |
+ duration, spent_in_mutator, |
+ current_.TypeName(true), |
+ current_.reduce_memory, |
+ current_.scopes[Scope::EXTERNAL], |
+ current_.scopes[Scope::MC_MARK], |
+ current_.scopes[Scope::MC_SWEEP], |
+ current_.scopes[Scope::MC_SWEEP_NEWSPACE], |
+ current_.scopes[Scope::MC_SWEEP_OLDSPACE], |
+ current_.scopes[Scope::MC_SWEEP_CODE], |
+ current_.scopes[Scope::MC_SWEEP_CELL], |
+ current_.scopes[Scope::MC_SWEEP_MAP], |
+ current_.scopes[Scope::MC_EVACUATE_PAGES], |
+ current_.scopes[Scope::MC_UPDATE_NEW_TO_NEW_POINTERS], |
+ current_.scopes[Scope::MC_UPDATE_ROOT_TO_NEW_POINTERS], |
+ current_.scopes[Scope::MC_UPDATE_OLD_TO_NEW_POINTERS], |
+ current_.scopes[Scope::MC_UPDATE_POINTERS_TO_EVACUATED], |
+ current_.scopes[Scope::MC_UPDATE_POINTERS_BETWEEN_EVACUATED], |
+ current_.scopes[Scope::MC_UPDATE_MISC_POINTERS], |
+ current_.scopes[Scope::MC_WEAKCLOSURE], |
+ current_.scopes[Scope::MC_INCREMENTAL_WEAKCLOSURE], |
+ current_.scopes[Scope::MC_WEAKCOLLECTION_PROCESS], |
+ current_.scopes[Scope::MC_WEAKCOLLECTION_CLEAR], |
+ current_.scopes[Scope::MC_WEAKCOLLECTION_ABORT], |
+ current_.scopes[Scope::MC_WEAKCELL], |
+ current_.scopes[Scope::MC_NONLIVEREFERENCES], |
+ current_.incremental_marking_steps, |
+ current_.incremental_marking_duration, |
+ current_.longest_incremental_marking_step, |
+ IncrementalMarkingSpeedInBytesPerMillisecond(), |
+ current_.start_object_size, current_.end_object_size, |
+ current_.start_holes_size, current_.end_holes_size, |
+ allocated_since_last_gc, heap_->promoted_objects_size(), |
+ heap_->semi_space_copied_object_size(), |
+ heap_->nodes_died_in_new_space_, |
+ heap_->nodes_copied_in_new_space_, heap_->nodes_promoted_, |
+ heap_->promotion_ratio_, AverageSurvivalRatio(), |
+ heap_->promotion_rate_, heap_->semi_space_copied_rate_, |
+ NewSpaceAllocationThroughputInBytesPerMillisecond(), |
+ ContextDisposalRateInMilliseconds()); |
break; |
case Event::START: |
break; |
default: |
UNREACHABLE(); |
} |
- |
- PrintF("total_size_before=%" V8_PTR_PREFIX "d ", current_.start_object_size); |
- PrintF("total_size_after=%" V8_PTR_PREFIX "d ", current_.end_object_size); |
- PrintF("holes_size_before=%" V8_PTR_PREFIX "d ", current_.start_holes_size); |
- PrintF("holes_size_after=%" V8_PTR_PREFIX "d ", current_.end_holes_size); |
- |
- intptr_t allocated_since_last_gc = |
- current_.start_object_size - previous_.end_object_size; |
- PrintF("allocated=%" V8_PTR_PREFIX "d ", allocated_since_last_gc); |
- PrintF("promoted=%" V8_PTR_PREFIX "d ", heap_->promoted_objects_size()); |
- PrintF("semi_space_copied=%" V8_PTR_PREFIX "d ", |
- heap_->semi_space_copied_object_size()); |
- PrintF("nodes_died_in_new=%d ", heap_->nodes_died_in_new_space_); |
- PrintF("nodes_copied_in_new=%d ", heap_->nodes_copied_in_new_space_); |
- PrintF("nodes_promoted=%d ", heap_->nodes_promoted_); |
- PrintF("promotion_ratio=%.1f%% ", heap_->promotion_ratio_); |
- PrintF("average_survival_ratio=%.1f%% ", AverageSurvivalRatio()); |
- PrintF("promotion_rate=%.1f%% ", heap_->promotion_rate_); |
- PrintF("semi_space_copy_rate=%.1f%% ", heap_->semi_space_copied_rate_); |
- PrintF("new_space_allocation_throughput=%" V8_PTR_PREFIX "d ", |
- NewSpaceAllocationThroughputInBytesPerMillisecond()); |
- PrintF("context_disposal_rate=%.1f ", ContextDisposalRateInMilliseconds()); |
- |
- PrintF("\n"); |
} |