Index: base/debug/trace_event_impl.cc |
diff --git a/base/debug/trace_event_impl.cc b/base/debug/trace_event_impl.cc |
index cc22424f15e505c96dac6cdc356b404be6e87406..b85aeca3b8f1663eff414f8760a04aa2a1c7771f 100644 |
--- a/base/debug/trace_event_impl.cc |
+++ b/base/debug/trace_event_impl.cc |
@@ -50,7 +50,8 @@ namespace debug { |
// Controls the number of trace events we will buffer in-memory |
// before throwing them away. |
-const size_t kTraceEventBufferSize = 500000; |
+const size_t kTraceEventVectorBufferSize = 250000; |
+const size_t kTraceEventRingBufferSize = kTraceEventVectorBufferSize / 4; |
const size_t kTraceEventBatchSize = 1000; |
const size_t kTraceEventInitialBufferSize = 1024; |
@@ -88,13 +89,6 @@ const char kRecordUntilFull[] = "record-until-full"; |
const char kRecordContinuously[] = "record-continuously"; |
const char kEnableSampling[] = "enable-sampling"; |
-size_t NextIndex(size_t index) { |
- index++; |
- if (index >= kTraceEventBufferSize) |
- index = 0; |
- return index; |
-} |
- |
} // namespace |
class TraceBufferRingBuffer : public TraceBuffer { |
@@ -160,7 +154,18 @@ class TraceBufferRingBuffer : public TraceBuffer { |
return logged_events_.size(); |
} |
+ virtual size_t Capacity() const OVERRIDE { |
+ return kTraceEventRingBufferSize; |
+ } |
+ |
private: |
+ static size_t NextIndex(size_t index) { |
+ index++; |
+ if (index >= kTraceEventRingBufferSize) |
+ index = 0; |
+ return index; |
+ } |
+ |
size_t unused_event_index_; |
size_t oldest_event_index_; |
std::vector<TraceEvent> logged_events_; |
@@ -196,7 +201,7 @@ class TraceBufferVector : public TraceBuffer { |
} |
virtual bool IsFull() const OVERRIDE { |
- return Size() >= kTraceEventBufferSize; |
+ return Size() >= kTraceEventVectorBufferSize; |
} |
virtual size_t CountEnabledByName( |
@@ -222,6 +227,10 @@ class TraceBufferVector : public TraceBuffer { |
return logged_events_.size(); |
} |
+ virtual size_t Capacity() const OVERRIDE { |
+ return kTraceEventVectorBufferSize; |
+ } |
+ |
private: |
size_t current_iteration_index_; |
std::vector<TraceEvent> logged_events_; |
@@ -251,6 +260,9 @@ class TraceBufferDiscardsEvents : public TraceBuffer { |
virtual size_t Size() const OVERRIDE { return 0; } |
+ // As this buffer is never full, we can return any positive number. |
+ virtual size_t Capacity() const OVERRIDE { return 1; } |
+ |
virtual const TraceEvent& GetEventAt(size_t index) const OVERRIDE { |
NOTREACHED(); |
return *static_cast<TraceEvent*>(NULL); |
@@ -1088,7 +1100,8 @@ bool TraceLog::HasEnabledStateObserver(EnabledStateObserver* listener) const { |
} |
float TraceLog::GetBufferPercentFull() const { |
- return (float)((double)logged_events_->Size()/(double)kTraceEventBufferSize); |
+ return static_cast<float>(static_cast<double>(logged_events_->Size()) / |
+ logged_events_->Capacity()); |
} |
void TraceLog::SetNotificationCallback( |