Chromium Code Reviews| 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 #ifndef V8_DEBUG_H_ | 5 #ifndef V8_DEBUG_H_ |
| 6 #define V8_DEBUG_H_ | 6 #define V8_DEBUG_H_ |
| 7 | 7 |
| 8 #include "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/arguments.h" | 9 #include "src/arguments.h" |
| 10 #include "src/assembler.h" | 10 #include "src/assembler.h" |
| (...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 508 | 508 |
| 509 void UpdateState(); | 509 void UpdateState(); |
| 510 void Unload(); | 510 void Unload(); |
| 511 void SetNextBreakId() { | 511 void SetNextBreakId() { |
| 512 thread_local_.break_id_ = ++thread_local_.break_count_; | 512 thread_local_.break_id_ = ++thread_local_.break_count_; |
| 513 } | 513 } |
| 514 | 514 |
| 515 // Check whether there are commands in the command queue. | 515 // Check whether there are commands in the command queue. |
| 516 inline bool has_commands() const { return !command_queue_.IsEmpty(); } | 516 inline bool has_commands() const { return !command_queue_.IsEmpty(); } |
| 517 inline bool ignore_events() const { return is_suppressed_ || !is_active_; } | 517 inline bool ignore_events() const { return is_suppressed_ || !is_active_; } |
| 518 inline bool break_disabled() const { | |
| 519 return break_disabled_ || break_disabled_for_event_; | |
| 520 } | |
| 518 | 521 |
| 519 void OnException(Handle<Object> exception, bool uncaught, | 522 void OnException(Handle<Object> exception, bool uncaught, |
| 520 Handle<Object> promise); | 523 Handle<Object> promise); |
| 521 | 524 |
| 522 // Constructors for debug event objects. | 525 // Constructors for debug event objects. |
| 523 MUST_USE_RESULT MaybeHandle<Object> MakeJSObject( | 526 MUST_USE_RESULT MaybeHandle<Object> MakeJSObject( |
| 524 const char* constructor_name, | 527 const char* constructor_name, |
| 525 int argc, | 528 int argc, |
| 526 Handle<Object> argv[]); | 529 Handle<Object> argv[]); |
| 527 MUST_USE_RESULT MaybeHandle<Object> MakeExecutionState(); | 530 MUST_USE_RESULT MaybeHandle<Object> MakeExecutionState(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 585 static const int kQueueInitialSize = 4; | 588 static const int kQueueInitialSize = 4; |
| 586 base::Semaphore command_received_; // Signaled for each command received. | 589 base::Semaphore command_received_; // Signaled for each command received. |
| 587 LockingCommandMessageQueue command_queue_; | 590 LockingCommandMessageQueue command_queue_; |
| 588 LockingCommandMessageQueue event_command_queue_; | 591 LockingCommandMessageQueue event_command_queue_; |
| 589 | 592 |
| 590 bool is_active_; | 593 bool is_active_; |
| 591 bool is_suppressed_; | 594 bool is_suppressed_; |
| 592 bool live_edit_enabled_; | 595 bool live_edit_enabled_; |
| 593 bool has_break_points_; | 596 bool has_break_points_; |
| 594 bool break_disabled_; | 597 bool break_disabled_; |
| 598 bool break_disabled_for_event_; | |
|
yurys
2014/11/18 12:53:33
I'd rather call it something like in_debug_listene
| |
| 595 bool break_on_exception_; | 599 bool break_on_exception_; |
| 596 bool break_on_uncaught_exception_; | 600 bool break_on_uncaught_exception_; |
| 597 | 601 |
| 598 ScriptCache* script_cache_; // Cache of all scripts in the heap. | 602 ScriptCache* script_cache_; // Cache of all scripts in the heap. |
| 599 DebugInfoListNode* debug_info_list_; // List of active debug info objects. | 603 DebugInfoListNode* debug_info_list_; // List of active debug info objects. |
| 600 | 604 |
| 601 // Storage location for jump when exiting debug break calls. | 605 // Storage location for jump when exiting debug break calls. |
| 602 // Note that this address is not GC safe. It should be computed immediately | 606 // Note that this address is not GC safe. It should be computed immediately |
| 603 // before returning to the DebugBreakCallHelper. | 607 // before returning to the DebugBreakCallHelper. |
| 604 Address after_break_target_; | 608 Address after_break_target_; |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 695 bool failed_; // Did the debug context fail to load? | 699 bool failed_; // Did the debug context fail to load? |
| 696 SaveContext save_; // Saves previous context. | 700 SaveContext save_; // Saves previous context. |
| 697 PostponeInterruptsScope no_termination_exceptons_; | 701 PostponeInterruptsScope no_termination_exceptons_; |
| 698 }; | 702 }; |
| 699 | 703 |
| 700 | 704 |
| 701 // Stack allocated class for disabling break. | 705 // Stack allocated class for disabling break. |
| 702 class DisableBreak BASE_EMBEDDED { | 706 class DisableBreak BASE_EMBEDDED { |
| 703 public: | 707 public: |
| 704 explicit DisableBreak(Debug* debug, bool disable_break) | 708 explicit DisableBreak(Debug* debug, bool disable_break) |
| 705 : debug_(debug), old_state_(debug->break_disabled_) { | 709 : debug_(debug), |
| 710 previous_break_disabled_(debug->break_disabled_), | |
| 711 previous_break_disabled_for_event_(debug->break_disabled_for_event_) { | |
| 706 debug_->break_disabled_ = disable_break; | 712 debug_->break_disabled_ = disable_break; |
| 713 debug_->break_disabled_for_event_ = disable_break; | |
| 707 } | 714 } |
| 708 ~DisableBreak() { debug_->break_disabled_ = old_state_; } | 715 ~DisableBreak() { |
| 716 debug_->break_disabled_ = previous_break_disabled_; | |
| 717 debug_->break_disabled_for_event_ = previous_break_disabled_for_event_; | |
| 718 } | |
| 709 | 719 |
| 710 private: | 720 private: |
| 711 Debug* debug_; | 721 Debug* debug_; |
| 712 bool old_state_; | 722 bool previous_break_disabled_ : 1; |
|
yurys
2014/11/18 12:53:33
Does it really make sense to use bit fields here?
| |
| 723 bool previous_break_disabled_for_event_ : 1; | |
| 713 DISALLOW_COPY_AND_ASSIGN(DisableBreak); | 724 DISALLOW_COPY_AND_ASSIGN(DisableBreak); |
| 714 }; | 725 }; |
| 715 | 726 |
| 716 | 727 |
| 717 class SuppressDebug BASE_EMBEDDED { | 728 class SuppressDebug BASE_EMBEDDED { |
| 718 public: | 729 public: |
| 719 explicit SuppressDebug(Debug* debug) | 730 explicit SuppressDebug(Debug* debug) |
| 720 : debug_(debug), old_state_(debug->is_suppressed_) { | 731 : debug_(debug), old_state_(debug->is_suppressed_) { |
| 721 debug_->is_suppressed_ = true; | 732 debug_->is_suppressed_ = true; |
| 722 } | 733 } |
| (...skipping 27 matching lines...) Expand all Loading... | |
| 750 // several frames above. | 761 // several frames above. |
| 751 // There is no calling conventions here, because it never actually gets | 762 // There is no calling conventions here, because it never actually gets |
| 752 // called, it only gets returned to. | 763 // called, it only gets returned to. |
| 753 static void GenerateFrameDropperLiveEdit(MacroAssembler* masm); | 764 static void GenerateFrameDropperLiveEdit(MacroAssembler* masm); |
| 754 }; | 765 }; |
| 755 | 766 |
| 756 | 767 |
| 757 } } // namespace v8::internal | 768 } } // namespace v8::internal |
| 758 | 769 |
| 759 #endif // V8_DEBUG_H_ | 770 #endif // V8_DEBUG_H_ |
| OLD | NEW |