Index: src/cpu-profiler.h |
diff --git a/src/cpu-profiler.h b/src/cpu-profiler.h |
index d335dedc5cb765f2f2a66eb1e451207c44d749f3..7e6b5d4852eea701de7550c1f0157873a80b8f32 100644 |
--- a/src/cpu-profiler.h |
+++ b/src/cpu-profiler.h |
@@ -30,7 +30,6 @@ |
#include "allocation.h" |
#include "atomicops.h" |
-#include "circular-queue.h" |
Jakob Kummerow
2012/10/02 10:56:51
We still need this for the ASSERT in line 104.
|
#include "unbound-queue.h" |
namespace v8 { |
@@ -158,11 +157,12 @@ class ProfilerEventsProcessor : public Thread { |
// Puts current stack into tick sample events buffer. |
void AddCurrentStack(); |
- // Tick sample events are filled directly in the buffer of the circular |
- // queue (because the structure is of fixed width, but usually not all |
- // stack frame entries are filled.) This method returns a pointer to the |
- // next record of the buffer. |
- INLINE(TickSample* TickSampleEvent()); |
+ // StartTickSampleEvent returns a pointer only if the ticks_buffer_ is empty, |
+ // FinishTickSampleEvent marks the ticks_buffer_ as filled. |
+ // Finish should be called only after successful Start (returning non-NULL |
+ // pointer). |
+ INLINE(TickSample* StartTickSampleEvent()); |
+ INLINE(void FinishTickSampleEvent()); |
private: |
union CodeEventsContainer { |
@@ -174,7 +174,7 @@ class ProfilerEventsProcessor : public Thread { |
// Called from events processing thread (Run() method.) |
bool ProcessCodeEvent(unsigned* dequeue_order); |
- bool ProcessTicks(int64_t stop_time, unsigned dequeue_order); |
+ bool ProcessTicks(unsigned dequeue_order); |
void ProcessEventsQueue(int64_t stop_time, unsigned* dequeue_order); |
INLINE(static bool FilterOutCodeCreateEvent(Logger::LogEventsAndTags tag)); |
@@ -185,7 +185,9 @@ class ProfilerEventsProcessor : public Thread { |
// Sampling period in microseconds. |
const int period_in_useconds_; |
UnboundQueue<CodeEventsContainer> events_buffer_; |
- SamplingCircularQueue ticks_buffer_; |
+ TickSampleEventRecord ticks_buffer_; |
+ bool ticks_buffer_is_empty_; |
+ bool ticks_buffer_is_initialized_; |
UnboundQueue<TickSampleEventRecord> ticks_from_vm_buffer_; |
unsigned enqueue_order_; |
}; |
@@ -224,7 +226,10 @@ class CpuProfiler { |
static bool HasDetachedProfiles(); |
// Invoked from stack sampler (thread or signal handler.) |
- static TickSample* TickSampleEvent(Isolate* isolate); |
+ // Finish should be called only after successful Start (returning non-NULL |
+ // pointer). |
+ static TickSample* StartTickSampleEvent(Isolate* isolate); |
+ static void FinishTickSampleEvent(Isolate* isolate); |
// Must be called via PROFILE macro, otherwise will crash when |
// profiling is not enabled. |