Index: src/heap/gc-tracer.h |
diff --git a/src/heap/gc-tracer.h b/src/heap/gc-tracer.h |
index cb089bf51a2b63203f49d27f538f5283097341be..67d7a18caf43bea51dd511f57315ec71317dd833 100644 |
--- a/src/heap/gc-tracer.h |
+++ b/src/heap/gc-tracer.h |
@@ -7,6 +7,7 @@ |
#include "src/base/compiler-specific.h" |
#include "src/base/platform/platform.h" |
+#include "src/base/ring-buffer.h" |
#include "src/counters.h" |
#include "src/globals.h" |
#include "testing/gtest/include/gtest/gtest_prod.h" |
@@ -14,44 +15,6 @@ |
namespace v8 { |
namespace internal { |
-template <typename T> |
-class RingBuffer { |
- public: |
- RingBuffer() { Reset(); } |
- static const int kSize = 10; |
- void Push(const T& value) { |
- if (count_ == kSize) { |
- elements_[start_++] = value; |
- if (start_ == kSize) start_ = 0; |
- } else { |
- DCHECK_EQ(start_, 0); |
- elements_[count_++] = value; |
- } |
- } |
- |
- int Count() const { return count_; } |
- |
- template <typename Callback> |
- T Sum(Callback callback, const T& initial) const { |
- int j = start_ + count_ - 1; |
- if (j >= kSize) j -= kSize; |
- T result = initial; |
- for (int i = 0; i < count_; i++) { |
- result = callback(result, elements_[j]); |
- if (--j == -1) j += kSize; |
- } |
- return result; |
- } |
- |
- void Reset() { start_ = count_ = 0; } |
- |
- private: |
- T elements_[kSize]; |
- int start_; |
- int count_; |
- DISALLOW_COPY_AND_ASSIGN(RingBuffer); |
-}; |
- |
typedef std::pair<uint64_t, double> BytesAndDuration; |
inline BytesAndDuration MakeBytesAndDuration(uint64_t bytes, double duration) { |
@@ -377,8 +340,8 @@ class GCTracer { |
// Returns the average speed of the events in the buffer. |
// If the buffer is empty, the result is 0. |
// Otherwise, the result is between 1 byte/ms and 1 GB/ms. |
- static double AverageSpeed(const RingBuffer<BytesAndDuration>& buffer); |
- static double AverageSpeed(const RingBuffer<BytesAndDuration>& buffer, |
+ static double AverageSpeed(const base::RingBuffer<BytesAndDuration>& buffer); |
+ static double AverageSpeed(const base::RingBuffer<BytesAndDuration>& buffer, |
const BytesAndDuration& initial, double time_ms); |
void ResetForTesting(); |
@@ -453,15 +416,15 @@ class GCTracer { |
// Separate timer used for --runtime_call_stats |
RuntimeCallTimer timer_; |
- RingBuffer<BytesAndDuration> recorded_scavenges_total_; |
- RingBuffer<BytesAndDuration> recorded_scavenges_survived_; |
- RingBuffer<BytesAndDuration> recorded_compactions_; |
- RingBuffer<BytesAndDuration> recorded_incremental_mark_compacts_; |
- RingBuffer<BytesAndDuration> recorded_mark_compacts_; |
- RingBuffer<BytesAndDuration> recorded_new_generation_allocations_; |
- RingBuffer<BytesAndDuration> recorded_old_generation_allocations_; |
- RingBuffer<double> recorded_context_disposal_times_; |
- RingBuffer<double> recorded_survival_ratios_; |
+ base::RingBuffer<BytesAndDuration> recorded_scavenges_total_; |
+ base::RingBuffer<BytesAndDuration> recorded_scavenges_survived_; |
+ base::RingBuffer<BytesAndDuration> recorded_compactions_; |
+ base::RingBuffer<BytesAndDuration> recorded_incremental_mark_compacts_; |
+ base::RingBuffer<BytesAndDuration> recorded_mark_compacts_; |
+ base::RingBuffer<BytesAndDuration> recorded_new_generation_allocations_; |
+ base::RingBuffer<BytesAndDuration> recorded_old_generation_allocations_; |
+ base::RingBuffer<double> recorded_context_disposal_times_; |
+ base::RingBuffer<double> recorded_survival_ratios_; |
DISALLOW_COPY_AND_ASSIGN(GCTracer); |
}; |