Index: src/heap/gc-tracer.cc |
diff --git a/src/heap/gc-tracer.cc b/src/heap/gc-tracer.cc |
index af9470e40725a306e48f493e8dd498b9d7caef79..50b85e4df1c353dca5c036ae301b1345a8f90e57 100644 |
--- a/src/heap/gc-tracer.cc |
+++ b/src/heap/gc-tracer.cc |
@@ -335,11 +335,14 @@ void GCTracer::SampleAllocation(double current_ms, |
void GCTracer::AddAllocation(double current_ms) { |
allocation_time_ms_ = current_ms; |
- new_space_allocation_events_.push_front(AllocationEvent( |
- allocation_duration_since_gc_, new_space_allocation_in_bytes_since_gc_)); |
- old_generation_allocation_events_.push_front( |
- AllocationEvent(allocation_duration_since_gc_, |
- old_generation_allocation_in_bytes_since_gc_)); |
+ if (allocation_duration_since_gc_ > 0) { |
+ new_space_allocation_events_.push_front( |
+ AllocationEvent(allocation_duration_since_gc_, |
+ new_space_allocation_in_bytes_since_gc_)); |
+ old_generation_allocation_events_.push_front( |
+ AllocationEvent(allocation_duration_since_gc_, |
+ old_generation_allocation_in_bytes_since_gc_)); |
+ } |
allocation_duration_since_gc_ = 0; |
new_space_allocation_in_bytes_since_gc_ = 0; |
old_generation_allocation_in_bytes_since_gc_ = 0; |
@@ -469,9 +472,9 @@ void GCTracer::PrintNVP() const { |
"code=%.2f " |
"semispace=%.2f " |
"object_groups=%.2f " |
- "external_prologue=$.2f " |
- "external_epilogue=$.2f " |
- "external_weak_global_handles=$.2f " |
+ "external_prologue=%.2f " |
+ "external_epilogue=%.2f " |
+ "external_weak_global_handles=%.2f " |
"steps_count=%d " |
"steps_took=%.1f " |
"scavenge_throughput=%" V8_PTR_PREFIX |
@@ -497,8 +500,7 @@ void GCTracer::PrintNVP() const { |
"average_survival_ratio=%.1f%% " |
"promotion_rate=%.1f%% " |
"semi_space_copy_rate=%.1f%% " |
- "new_space_allocation_throughput=%" V8_PTR_PREFIX |
- "d " |
+ "new_space_allocation_throughput=%.1f " |
"context_disposal_rate=%.1f\n", |
heap_->isolate()->time_millis_since_init(), duration, |
spent_in_mutator, current_.TypeName(true), |
@@ -601,8 +603,7 @@ void GCTracer::PrintNVP() const { |
"average_survival_ratio=%.1f%% " |
"promotion_rate=%.1f%% " |
"semi_space_copy_rate=%.1f%% " |
- "new_space_allocation_throughput=%" V8_PTR_PREFIX |
- "d " |
+ "new_space_allocation_throughput=%.1f " |
"context_disposal_rate=%.1f " |
"compaction_speed=%" V8_PTR_PREFIX "d\n", |
heap_->isolate()->time_millis_since_init(), duration, |
@@ -811,8 +812,7 @@ double GCTracer::CombinedMarkCompactSpeedInBytesPerMillisecond() { |
return combined_mark_compact_speed_cache_; |
} |
- |
-size_t GCTracer::NewSpaceAllocationThroughputInBytesPerMillisecond( |
+double GCTracer::NewSpaceAllocationThroughputInBytesPerMillisecond( |
double time_ms) const { |
size_t bytes = new_space_allocation_in_bytes_since_gc_; |
double durations = allocation_duration_since_gc_; |
@@ -827,12 +827,12 @@ size_t GCTracer::NewSpaceAllocationThroughputInBytesPerMillisecond( |
} |
if (durations == 0.0) return 0; |
+ |
// Make sure the result is at least 1. |
- return Max<size_t>(static_cast<size_t>(bytes / durations + 0.5), 1); |
+ return Max<double>(bytes / durations, 1); |
} |
- |
-size_t GCTracer::OldGenerationAllocationThroughputInBytesPerMillisecond( |
+double GCTracer::OldGenerationAllocationThroughputInBytesPerMillisecond( |
double time_ms) const { |
size_t bytes = old_generation_allocation_in_bytes_since_gc_; |
double durations = allocation_duration_since_gc_; |
@@ -848,11 +848,10 @@ size_t GCTracer::OldGenerationAllocationThroughputInBytesPerMillisecond( |
if (durations == 0.0) return 0; |
// Make sure the result is at least 1. |
- return Max<size_t>(static_cast<size_t>(bytes / durations + 0.5), 1); |
+ return Max<double>(bytes / durations, 1); |
} |
- |
-size_t GCTracer::AllocationThroughputInBytesPerMillisecond( |
+double GCTracer::AllocationThroughputInBytesPerMillisecond( |
double time_ms) const { |
return NewSpaceAllocationThroughputInBytesPerMillisecond(time_ms) + |
OldGenerationAllocationThroughputInBytesPerMillisecond(time_ms); |