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 1086 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 OSThread* os_thread = thread->os_thread(); | 1097 OSThread* os_thread = thread->os_thread(); |
1098 ASSERT(os_thread != NULL); | 1098 ASSERT(os_thread != NULL); |
1099 Isolate* isolate = thread->isolate(); | 1099 Isolate* isolate = thread->isolate(); |
1100 | 1100 |
1101 // Thread is not doing VM work. | 1101 // Thread is not doing VM work. |
1102 if (thread->task_kind() == Thread::kUnknownTask) { | 1102 if (thread->task_kind() == Thread::kUnknownTask) { |
1103 AtomicOperations::IncrementInt64By(&counters_.bail_out_unknown_task, 1); | 1103 AtomicOperations::IncrementInt64By(&counters_.bail_out_unknown_task, 1); |
1104 return; | 1104 return; |
1105 } | 1105 } |
1106 | 1106 |
1107 if (StubCode::HasBeenInitialized() && | 1107 if (StubCode::HasBeenInitialized() && StubCode::InJumpToFrameStub(state.pc)) { |
1108 StubCode::InJumpToExceptionHandlerStub(state.pc)) { | 1108 // The JumpToFrame stub manually adjusts the stack pointer, frame |
1109 // The JumpToExceptionHandler stub manually adjusts the stack pointer, | 1109 // pointer, and some isolate state. It is not safe to walk the |
1110 // frame pointer, and some isolate state before jumping to a catch entry. | 1110 // stack when executing this stub. |
1111 // It is not safe to walk the stack when executing this stub. | |
1112 AtomicOperations::IncrementInt64By( | 1111 AtomicOperations::IncrementInt64By( |
1113 &counters_.bail_out_jump_to_exception_handler, 1); | 1112 &counters_.bail_out_jump_to_exception_handler, 1); |
1114 return; | 1113 return; |
1115 } | 1114 } |
1116 | 1115 |
1117 const bool in_dart_code = thread->IsExecutingDartCode(); | 1116 const bool in_dart_code = thread->IsExecutingDartCode(); |
1118 | 1117 |
1119 uintptr_t sp = 0; | 1118 uintptr_t sp = 0; |
1120 uintptr_t fp = state.fp; | 1119 uintptr_t fp = state.fp; |
1121 uintptr_t pc = state.pc; | 1120 uintptr_t pc = state.pc; |
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1529 | 1528 |
1530 | 1529 |
1531 ProcessedSampleBuffer::ProcessedSampleBuffer() | 1530 ProcessedSampleBuffer::ProcessedSampleBuffer() |
1532 : code_lookup_table_(new CodeLookupTable(Thread::Current())) { | 1531 : code_lookup_table_(new CodeLookupTable(Thread::Current())) { |
1533 ASSERT(code_lookup_table_ != NULL); | 1532 ASSERT(code_lookup_table_ != NULL); |
1534 } | 1533 } |
1535 | 1534 |
1536 #endif // !PRODUCT | 1535 #endif // !PRODUCT |
1537 | 1536 |
1538 } // namespace dart | 1537 } // namespace dart |
OLD | NEW |