OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #ifndef VM_PROFILER_H_ | 5 #ifndef VM_PROFILER_H_ |
6 #define VM_PROFILER_H_ | 6 #define VM_PROFILER_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/bitfield.h" | 9 #include "vm/bitfield.h" |
10 #include "vm/code_observers.h" | 10 #include "vm/code_observers.h" |
(...skipping 15 matching lines...) Expand all Loading... |
26 class SampleBuffer; | 26 class SampleBuffer; |
27 | 27 |
28 class Profiler : public AllStatic { | 28 class Profiler : public AllStatic { |
29 public: | 29 public: |
30 static void InitOnce(); | 30 static void InitOnce(); |
31 static void Shutdown(); | 31 static void Shutdown(); |
32 | 32 |
33 static void SetSampleDepth(intptr_t depth); | 33 static void SetSampleDepth(intptr_t depth); |
34 static void SetSamplePeriod(intptr_t period); | 34 static void SetSamplePeriod(intptr_t period); |
35 | 35 |
36 static void InitProfilingForIsolate(Isolate* isolate, | |
37 bool shared_buffer = true); | |
38 static void ShutdownProfilingForIsolate(Isolate* isolate); | |
39 | |
40 static void BeginExecution(Isolate* isolate); | |
41 static void EndExecution(Isolate* isolate); | |
42 | |
43 static SampleBuffer* sample_buffer() { | 36 static SampleBuffer* sample_buffer() { |
44 return sample_buffer_; | 37 return sample_buffer_; |
45 } | 38 } |
46 | 39 |
47 static void RecordAllocation(Thread* thread, intptr_t cid); | 40 static void SampleAllocation(Thread* thread, intptr_t cid); |
| 41 static void SampleThread(Thread* thread, |
| 42 const InterruptedThreadState& state); |
48 | 43 |
49 private: | 44 private: |
50 static bool initialized_; | 45 static bool initialized_; |
51 static Monitor* monitor_; | 46 static Monitor* monitor_; |
52 | 47 |
53 static void RecordSampleInterruptCallback(const InterruptedThreadState& state, | 48 static SampleBuffer* sample_buffer_; |
54 void* data); | |
55 | 49 |
56 static SampleBuffer* sample_buffer_; | 50 friend class Thread; |
57 }; | 51 }; |
58 | 52 |
59 | 53 |
60 class IsolateProfilerData { | |
61 public: | |
62 IsolateProfilerData(SampleBuffer* sample_buffer, bool own_sample_buffer); | |
63 ~IsolateProfilerData(); | |
64 | |
65 SampleBuffer* sample_buffer() const { return sample_buffer_; } | |
66 | |
67 void set_sample_buffer(SampleBuffer* sample_buffer) { | |
68 sample_buffer_ = sample_buffer; | |
69 } | |
70 | |
71 bool blocked() const { | |
72 return block_count_ > 0; | |
73 } | |
74 | |
75 void Block(); | |
76 | |
77 void Unblock(); | |
78 | |
79 private: | |
80 SampleBuffer* sample_buffer_; | |
81 bool own_sample_buffer_; | |
82 intptr_t block_count_; | |
83 | |
84 DISALLOW_COPY_AND_ASSIGN(IsolateProfilerData); | |
85 }; | |
86 | |
87 | |
88 class SampleVisitor : public ValueObject { | 54 class SampleVisitor : public ValueObject { |
89 public: | 55 public: |
90 explicit SampleVisitor(Isolate* isolate) : isolate_(isolate), visited_(0) { } | 56 explicit SampleVisitor(Isolate* isolate) : isolate_(isolate), visited_(0) { } |
91 virtual ~SampleVisitor() {} | 57 virtual ~SampleVisitor() {} |
92 | 58 |
93 virtual void VisitSample(Sample* sample) = 0; | 59 virtual void VisitSample(Sample* sample) = 0; |
94 | 60 |
95 intptr_t visited() const { | 61 intptr_t visited() const { |
96 return visited_; | 62 return visited_; |
97 } | 63 } |
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
556 | 522 |
557 private: | 523 private: |
558 ZoneGrowableArray<ProcessedSample*> samples_; | 524 ZoneGrowableArray<ProcessedSample*> samples_; |
559 | 525 |
560 DISALLOW_COPY_AND_ASSIGN(ProcessedSampleBuffer); | 526 DISALLOW_COPY_AND_ASSIGN(ProcessedSampleBuffer); |
561 }; | 527 }; |
562 | 528 |
563 } // namespace dart | 529 } // namespace dart |
564 | 530 |
565 #endif // VM_PROFILER_H_ | 531 #endif // VM_PROFILER_H_ |
OLD | NEW |