| Index: src/cpu-profiler.h
|
| diff --git a/src/cpu-profiler.h b/src/cpu-profiler.h
|
| index 1dd405e5d76a8bd97a083560b4a1283641b7fbc2..84e34e422e78e2e277ae9766e48efa01a9d5c089 100644
|
| --- a/src/cpu-profiler.h
|
| +++ b/src/cpu-profiler.h
|
| @@ -114,10 +114,6 @@ class TickSampleEventRecord {
|
|
|
| unsigned order;
|
| TickSample sample;
|
| -
|
| - static TickSampleEventRecord* cast(void* value) {
|
| - return reinterpret_cast<TickSampleEventRecord*>(value);
|
| - }
|
| };
|
|
|
|
|
| @@ -140,7 +136,9 @@ class CodeEventsContainer {
|
| // methods called by event producers: VM and stack sampler threads.
|
| class ProfilerEventsProcessor : public Thread {
|
| public:
|
| - explicit ProfilerEventsProcessor(ProfileGenerator* generator);
|
| + ProfilerEventsProcessor(ProfileGenerator* generator,
|
| + Sampler* sampler,
|
| + int period_in_useconds);
|
| virtual ~ProfilerEventsProcessor() {}
|
|
|
| // Thread control.
|
| @@ -156,17 +154,28 @@ class ProfilerEventsProcessor : public Thread {
|
| // 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());
|
| + inline TickSample* StartTickSample();
|
| + inline void FinishTickSample();
|
|
|
| private:
|
| // Called from events processing thread (Run() method.)
|
| bool ProcessCodeEvent();
|
| bool ProcessTicks();
|
|
|
| + void ProcessEventsAndDoSample();
|
| + void ProcessEventsAndYield();
|
| +
|
| ProfileGenerator* generator_;
|
| + Sampler* sampler_;
|
| bool running_;
|
| + // Sampling period in microseconds.
|
| + const int period_in_useconds_;
|
| UnboundQueue<CodeEventsContainer> events_buffer_;
|
| - SamplingCircularQueue ticks_buffer_;
|
| + static const size_t kTickSampleBufferSize = 1 * MB;
|
| + static const size_t kTickSampleQueueLength =
|
| + kTickSampleBufferSize / sizeof(TickSampleEventRecord);
|
| + SamplingCircularQueue<TickSampleEventRecord,
|
| + kTickSampleQueueLength> ticks_buffer_;
|
| UnboundQueue<TickSampleEventRecord> ticks_from_vm_buffer_;
|
| unsigned last_code_event_id_;
|
| unsigned last_processed_code_event_id_;
|
| @@ -205,7 +214,8 @@ class CpuProfiler : public CodeEventListener {
|
| void DeleteProfile(CpuProfile* profile);
|
|
|
| // Invoked from stack sampler (thread or signal handler.)
|
| - TickSample* TickSampleEvent();
|
| + inline TickSample* StartTickSample();
|
| + inline void FinishTickSample();
|
|
|
| // Must be called via PROFILE macro, otherwise will crash when
|
| // profiling is not enabled.
|
|
|