| Index: runtime/vm/profiler.h
|
| diff --git a/runtime/vm/profiler.h b/runtime/vm/profiler.h
|
| index 9f967cf9bea02ca0b3b176a14616582e3f6a1d75..ee87a31d954051b61af6a7a822b7f2bb78da23eb 100644
|
| --- a/runtime/vm/profiler.h
|
| +++ b/runtime/vm/profiler.h
|
| @@ -41,8 +41,6 @@ struct ProfilerCounters {
|
| int64_t stack_walker_dart_exit;
|
| int64_t stack_walker_dart;
|
| int64_t stack_walker_none;
|
| - // Count of failed checks:
|
| - int64_t failure_native_allocation_sample;
|
| };
|
|
|
|
|
| @@ -60,7 +58,6 @@ class Profiler : public AllStatic {
|
| static void DumpStackTrace();
|
|
|
| static void SampleAllocation(Thread* thread, intptr_t cid);
|
| - static Sample* SampleNativeAllocation(intptr_t skip_count);
|
|
|
| // SampleThread is called from inside the signal handler and hence it is very
|
| // critical that the implementation of SampleThread does not do any of the
|
| @@ -94,7 +91,7 @@ class Profiler : public AllStatic {
|
|
|
| class SampleVisitor : public ValueObject {
|
| public:
|
| - explicit SampleVisitor(Dart_Port port) : port_(port), visited_(0) {}
|
| + explicit SampleVisitor(Isolate* isolate) : isolate_(isolate), visited_(0) {}
|
| virtual ~SampleVisitor() {}
|
|
|
| virtual void VisitSample(Sample* sample) = 0;
|
| @@ -103,10 +100,10 @@ class SampleVisitor : public ValueObject {
|
|
|
| void IncrementVisited() { visited_++; }
|
|
|
| - Dart_Port port() const { return port_; }
|
| + Isolate* isolate() const { return isolate_; }
|
|
|
| private:
|
| - Dart_Port port_;
|
| + Isolate* isolate_;
|
| intptr_t visited_;
|
|
|
| DISALLOW_IMPLICIT_CONSTRUCTORS(SampleVisitor);
|
| @@ -115,11 +112,11 @@ class SampleVisitor : public ValueObject {
|
|
|
| class SampleFilter : public ValueObject {
|
| public:
|
| - SampleFilter(Dart_Port port,
|
| + SampleFilter(Isolate* isolate,
|
| intptr_t thread_task_mask,
|
| int64_t time_origin_micros,
|
| int64_t time_extent_micros)
|
| - : port_(port),
|
| + : isolate_(isolate),
|
| thread_task_mask_(thread_task_mask),
|
| time_origin_micros_(time_origin_micros),
|
| time_extent_micros_(time_extent_micros) {
|
| @@ -133,7 +130,7 @@ class SampleFilter : public ValueObject {
|
| // Return |true| if |sample| passes the filter.
|
| virtual bool FilterSample(Sample* sample) { return true; }
|
|
|
| - Dart_Port port() const { return port_; }
|
| + Isolate* isolate() const { return isolate_; }
|
|
|
| // Returns |true| if |sample| passes the time filter.
|
| bool TimeFilterSample(Sample* sample);
|
| @@ -142,7 +139,7 @@ class SampleFilter : public ValueObject {
|
| bool TaskFilterSample(Sample* sample);
|
|
|
| private:
|
| - Dart_Port port_;
|
| + Isolate* isolate_;
|
| intptr_t thread_task_mask_;
|
| int64_t time_origin_micros_;
|
| int64_t time_extent_micros_;
|
| @@ -160,20 +157,21 @@ class ClearProfileVisitor : public SampleVisitor {
|
| // Each Sample holds a stack trace from an isolate.
|
| class Sample {
|
| public:
|
| - void Init(Dart_Port port, int64_t timestamp, ThreadId tid) {
|
| + void Init(Isolate* isolate, int64_t timestamp, ThreadId tid) {
|
| Clear();
|
| timestamp_ = timestamp;
|
| tid_ = tid;
|
| - port_ = port;
|
| + isolate_ = isolate;
|
| }
|
|
|
| - Dart_Port port() const { return port_; }
|
| + // Isolate sample was taken from.
|
| + Isolate* isolate() const { return isolate_; }
|
|
|
| // Thread sample was taken on.
|
| ThreadId tid() const { return tid_; }
|
|
|
| void Clear() {
|
| - port_ = ILLEGAL_PORT;
|
| + isolate_ = NULL;
|
| pc_marker_ = 0;
|
| for (intptr_t i = 0; i < kStackBufferSizeInWords; i++) {
|
| stack_buffer_[i] = 0;
|
| @@ -270,15 +268,6 @@ class Sample {
|
| state_ = ClassAllocationSampleBit::update(allocation_sample, state_);
|
| }
|
|
|
| - bool is_native_allocation_sample() const {
|
| - return NativeAllocationSampleBit::decode(state_);
|
| - }
|
| -
|
| - void set_is_native_allocation_sample(bool native_allocation_sample) {
|
| - state_ =
|
| - NativeAllocationSampleBit::update(native_allocation_sample, state_);
|
| - }
|
| -
|
| Thread::TaskKind thread_task() const { return ThreadTaskBit::decode(state_); }
|
|
|
| void set_thread_task(Thread::TaskKind task) {
|
| @@ -342,8 +331,7 @@ class Sample {
|
| kClassAllocationSampleBit = 6,
|
| kContinuationSampleBit = 7,
|
| kThreadTaskBit = 8, // 5 bits.
|
| - kNativeAllocationSampleBit = 13,
|
| - kNextFreeBit = 14,
|
| + kNextFreeBit = 13,
|
| };
|
| class HeadSampleBit : public BitField<uword, bool, kHeadSampleBit, 1> {};
|
| class LeafFrameIsDart : public BitField<uword, bool, kLeafFrameIsDartBit, 1> {
|
| @@ -360,12 +348,10 @@ class Sample {
|
| : public BitField<uword, bool, kContinuationSampleBit, 1> {};
|
| class ThreadTaskBit
|
| : public BitField<uword, Thread::TaskKind, kThreadTaskBit, 5> {};
|
| - class NativeAllocationSampleBit
|
| - : public BitField<uword, bool, kNativeAllocationSampleBit, 1> {};
|
|
|
| int64_t timestamp_;
|
| ThreadId tid_;
|
| - Dart_Port port_;
|
| + Isolate* isolate_;
|
| uword pc_marker_;
|
| uword stack_buffer_[kStackBufferSizeInWords];
|
| uword vm_tag_;
|
| @@ -488,7 +474,7 @@ class SampleBuffer {
|
| // Bad sample.
|
| continue;
|
| }
|
| - if (sample->port() != visitor->port()) {
|
| + if (sample->isolate() != visitor->isolate()) {
|
| // Another isolate.
|
| continue;
|
| }
|
|
|