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 #include "platform/address_sanitizer.h" | 5 #include "platform/address_sanitizer.h" |
6 #include "platform/memory_sanitizer.h" | 6 #include "platform/memory_sanitizer.h" |
7 #include "platform/utils.h" | 7 #include "platform/utils.h" |
8 | 8 |
9 #include "vm/allocation.h" | 9 #include "vm/allocation.h" |
10 #include "vm/atomic.h" | 10 #include "vm/atomic.h" |
(...skipping 915 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
926 OSThread::GetCurrentThreadId()); | 926 OSThread::GetCurrentThreadId()); |
927 sample->SetAllocationCid(cid); | 927 sample->SetAllocationCid(cid); |
928 sample->set_vm_tag(VMTag::kEmbedderTagId); | 928 sample->set_vm_tag(VMTag::kEmbedderTagId); |
929 sample->SetAt(0, pc); | 929 sample->SetAt(0, pc); |
930 } | 930 } |
931 } | 931 } |
932 | 932 |
933 | 933 |
934 void Profiler::SampleThread(Thread* thread, | 934 void Profiler::SampleThread(Thread* thread, |
935 const InterruptedThreadState& state) { | 935 const InterruptedThreadState& state) { |
| 936 ASSERT(thread != NULL); |
| 937 Isolate* isolate = thread->isolate(); |
| 938 |
936 if (StubCode::HasBeenInitialized() && | 939 if (StubCode::HasBeenInitialized() && |
937 StubCode::InJumpToExceptionHandlerStub(state.pc)) { | 940 StubCode::InJumpToExceptionHandlerStub(state.pc)) { |
938 // The JumpToExceptionHandler stub manually adjusts the stack pointer, | 941 // The JumpToExceptionHandler stub manually adjusts the stack pointer, |
939 // frame pointer, and some isolate state before jumping to a catch entry. | 942 // frame pointer, and some isolate state before jumping to a catch entry. |
940 // It is not safe to walk the stack when executing this stub. | 943 // It is not safe to walk the stack when executing this stub. |
941 return; | 944 return; |
942 } | 945 } |
943 | 946 |
944 const bool in_dart_code = thread->IsExecutingDartCode(); | 947 const bool in_dart_code = thread->IsExecutingDartCode(); |
945 | 948 |
(...skipping 16 matching lines...) Expand all Loading... |
962 #endif | 965 #endif |
963 } else { | 966 } else { |
964 // If we're in runtime code, use the C stack pointer. | 967 // If we're in runtime code, use the C stack pointer. |
965 sp = state.csp; | 968 sp = state.csp; |
966 } | 969 } |
967 | 970 |
968 if (!InitialRegisterCheck(pc, fp, sp)) { | 971 if (!InitialRegisterCheck(pc, fp, sp)) { |
969 return; | 972 return; |
970 } | 973 } |
971 | 974 |
972 ASSERT(thread != NULL); | |
973 Isolate* isolate = thread->isolate(); | |
974 if (!CheckIsolate(isolate)) { | 975 if (!CheckIsolate(isolate)) { |
975 return; | 976 return; |
976 } | 977 } |
977 | 978 |
978 if (!thread->IsMutatorThread()) { | 979 if (!thread->IsMutatorThread()) { |
979 // Not a mutator thread. | 980 // Not a mutator thread. |
980 // TODO(johnmccutchan): Profile all threads with an isolate. | 981 // TODO(johnmccutchan): Profile all threads with an isolate. |
981 return; | 982 return; |
982 } | 983 } |
983 | 984 |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1258 uword pc) { | 1259 uword pc) { |
1259 return vm_isolate->heap()->CodeContains(pc) | 1260 return vm_isolate->heap()->CodeContains(pc) |
1260 || isolate->heap()->CodeContains(pc); | 1261 || isolate->heap()->CodeContains(pc); |
1261 } | 1262 } |
1262 | 1263 |
1263 | 1264 |
1264 ProcessedSampleBuffer::ProcessedSampleBuffer() { | 1265 ProcessedSampleBuffer::ProcessedSampleBuffer() { |
1265 } | 1266 } |
1266 | 1267 |
1267 } // namespace dart | 1268 } // namespace dart |
OLD | NEW |