Index: runtime/vm/profiler.h |
diff --git a/runtime/vm/profiler.h b/runtime/vm/profiler.h |
index ee87a31d954051b61af6a7a822b7f2bb78da23eb..ffe98da290131830dc0dca97e7f7b1b5539c8e19 100644 |
--- a/runtime/vm/profiler.h |
+++ b/runtime/vm/profiler.h |
@@ -58,6 +58,7 @@ class Profiler : public AllStatic { |
static void DumpStackTrace(); |
static void SampleAllocation(Thread* thread, intptr_t cid); |
+ static Sample* NativeSampleAllocation(); |
Cutch
2017/02/08 00:28:54
SampleNativeAllocation
bkonyi
2017/02/08 01:37:05
Done.
|
// 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 |
@@ -268,6 +269,15 @@ 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) { |
@@ -331,7 +341,8 @@ class Sample { |
kClassAllocationSampleBit = 6, |
kContinuationSampleBit = 7, |
kThreadTaskBit = 8, // 5 bits. |
- kNextFreeBit = 13, |
+ kNativeAllocationSampleBit = 13, |
+ kNextFreeBit = 14, |
}; |
class HeadSampleBit : public BitField<uword, bool, kHeadSampleBit, 1> {}; |
class LeafFrameIsDart : public BitField<uword, bool, kLeafFrameIsDartBit, 1> { |
@@ -344,6 +355,8 @@ class Sample { |
: public BitField<uword, bool, kTruncatedTraceBit, 1> {}; |
class ClassAllocationSampleBit |
: public BitField<uword, bool, kClassAllocationSampleBit, 1> {}; |
+ class NativeAllocationSampleBit |
+ : public BitField<uword, bool, kNativeAllocationSampleBit, 1> {}; |
class ContinuationSampleBit |
: public BitField<uword, bool, kContinuationSampleBit, 1> {}; |
class ThreadTaskBit |