| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/debug/debug.h" | 5 #include "src/debug/debug.h" |
| 6 | 6 |
| 7 #include "src/api.h" | 7 #include "src/api.h" |
| 8 #include "src/arguments.h" | 8 #include "src/arguments.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 // Debugger statement always calls debugger. No need to modify it. | 293 // Debugger statement always calls debugger. No need to modify it. |
| 294 if (IsDebuggerStatement()) return; | 294 if (IsDebuggerStatement()) return; |
| 295 | 295 |
| 296 DCHECK(IsDebugBreakSlot()); | 296 DCHECK(IsDebugBreakSlot()); |
| 297 DebugCodegen::ClearDebugBreakSlot(debug_info_->GetIsolate(), pc()); | 297 DebugCodegen::ClearDebugBreakSlot(debug_info_->GetIsolate(), pc()); |
| 298 DCHECK(!IsDebugBreak()); | 298 DCHECK(!IsDebugBreak()); |
| 299 } | 299 } |
| 300 | 300 |
| 301 | 301 |
| 302 bool BreakLocation::IsDebugBreak() const { | 302 bool BreakLocation::IsDebugBreak() const { |
| 303 if (IsDebugBreakSlot()) { | 303 if (IsDebuggerStatement()) return false; |
| 304 return rinfo().IsPatchedDebugBreakSlotSequence(); | 304 DCHECK(IsDebugBreakSlot()); |
| 305 } | 305 return rinfo().IsPatchedDebugBreakSlotSequence(); |
| 306 return false; | |
| 307 } | 306 } |
| 308 | 307 |
| 309 | 308 |
| 310 Handle<Object> BreakLocation::BreakPointObjects() const { | 309 Handle<Object> BreakLocation::BreakPointObjects() const { |
| 311 return debug_info_->GetBreakPointObjects(pc_offset_); | 310 return debug_info_->GetBreakPointObjects(pc_offset_); |
| 312 } | 311 } |
| 313 | 312 |
| 314 | 313 |
| 315 void DebugFeatureTracker::Track(DebugFeatureTracker::Feature feature) { | 314 void DebugFeatureTracker::Track(DebugFeatureTracker::Feature feature) { |
| 316 uint32_t mask = 1 << feature; | 315 uint32_t mask = 1 << feature; |
| (...skipping 663 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 980 break_location->code()->SourceStatementPosition(frame->pc()); | 979 break_location->code()->SourceStatementPosition(frame->pc()); |
| 981 return thread_local_.last_fp_ == frame->UnpaddedFP() && | 980 return thread_local_.last_fp_ == frame->UnpaddedFP() && |
| 982 thread_local_.last_statement_position_ == current_statement_position; | 981 thread_local_.last_statement_position_ == current_statement_position; |
| 983 } | 982 } |
| 984 | 983 |
| 985 // No step next action - don't continue. | 984 // No step next action - don't continue. |
| 986 return false; | 985 return false; |
| 987 } | 986 } |
| 988 | 987 |
| 989 | 988 |
| 990 // Check whether the code object at the specified address is a debug break code | |
| 991 // object. | |
| 992 bool Debug::IsDebugBreak(Address addr) { | |
| 993 Code* code = Code::GetCodeFromTargetAddress(addr); | |
| 994 return code->is_debug_stub(); | |
| 995 } | |
| 996 | |
| 997 | |
| 998 // Simple function for returning the source positions for active break points. | 989 // Simple function for returning the source positions for active break points. |
| 999 Handle<Object> Debug::GetSourceBreakLocations( | 990 Handle<Object> Debug::GetSourceBreakLocations( |
| 1000 Handle<SharedFunctionInfo> shared, | 991 Handle<SharedFunctionInfo> shared, |
| 1001 BreakPositionAlignment position_alignment) { | 992 BreakPositionAlignment position_alignment) { |
| 1002 Isolate* isolate = shared->GetIsolate(); | 993 Isolate* isolate = shared->GetIsolate(); |
| 1003 Heap* heap = isolate->heap(); | 994 Heap* heap = isolate->heap(); |
| 1004 if (!shared->HasDebugInfo()) { | 995 if (!shared->HasDebugInfo()) { |
| 1005 return Handle<Object>(heap->undefined_value(), isolate); | 996 return Handle<Object>(heap->undefined_value(), isolate); |
| 1006 } | 997 } |
| 1007 Handle<DebugInfo> debug_info(shared->GetDebugInfo()); | 998 Handle<DebugInfo> debug_info(shared->GetDebugInfo()); |
| (...skipping 1499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2507 } | 2498 } |
| 2508 | 2499 |
| 2509 | 2500 |
| 2510 void LockingCommandMessageQueue::Clear() { | 2501 void LockingCommandMessageQueue::Clear() { |
| 2511 base::LockGuard<base::Mutex> lock_guard(&mutex_); | 2502 base::LockGuard<base::Mutex> lock_guard(&mutex_); |
| 2512 queue_.Clear(); | 2503 queue_.Clear(); |
| 2513 } | 2504 } |
| 2514 | 2505 |
| 2515 } // namespace internal | 2506 } // namespace internal |
| 2516 } // namespace v8 | 2507 } // namespace v8 |
| OLD | NEW |