5 #ifndef V8_BASE_RING_BUFFER_H_ 6 #define V8_BASE_RING_BUFFER_H_ 8 #include "src/base/macros.h" 17 static const int kSize = 10;
18 void Push(
const T& value) {
19 if (count_ == kSize) {
20 elements_[start_++] = value;
21 if (start_ == kSize) start_ = 0;
24 elements_[count_++] = value;
28 int Count()
const {
return count_; }
30 template <
typename Callback>
31 T Sum(Callback callback,
const T& initial)
const {
32 int j = start_ + count_ - 1;
33 if (j >= kSize) j -= kSize;
35 for (
int i = 0;
i < count_;
i++) {
36 result = callback(result, elements_[j]);
37 if (--j == -1) j += kSize;
42 void Reset() { start_ = count_ = 0; }
54 #endif // V8_BASE_RING_BUFFER_H_