Index: src/debug.h |
diff --git a/src/debug.h b/src/debug.h |
index 2afe0f62131eebf791540c2b2621876f001e1037..cb71ed5c9369fffeed689ad0ee85b008d5203ad6 100644 |
--- a/src/debug.h |
+++ b/src/debug.h |
@@ -511,6 +511,9 @@ class Debug { |
// Check whether there are commands in the command queue. |
inline bool has_commands() const { return !command_queue_.IsEmpty(); } |
inline bool ignore_events() const { return is_suppressed_ || !is_active_; } |
+ inline bool break_disabled() const { |
+ return break_disabled_ || in_debug_event_listener_; |
+ } |
void OnException(Handle<Object> exception, bool uncaught, |
Handle<Object> promise); |
@@ -588,6 +591,7 @@ class Debug { |
bool live_edit_enabled_; |
bool has_break_points_; |
bool break_disabled_; |
+ bool in_debug_event_listener_; |
bool break_on_exception_; |
bool break_on_uncaught_exception_; |
@@ -698,14 +702,21 @@ class DebugScope BASE_EMBEDDED { |
class DisableBreak BASE_EMBEDDED { |
public: |
explicit DisableBreak(Debug* debug, bool disable_break) |
- : debug_(debug), old_state_(debug->break_disabled_) { |
+ : debug_(debug), |
+ previous_break_disabled_(debug->break_disabled_), |
+ previous_in_debug_event_listener_(debug->in_debug_event_listener_) { |
debug_->break_disabled_ = disable_break; |
+ debug_->in_debug_event_listener_ = disable_break; |
+ } |
+ ~DisableBreak() { |
+ debug_->break_disabled_ = previous_break_disabled_; |
+ debug_->in_debug_event_listener_ = previous_in_debug_event_listener_; |
} |
- ~DisableBreak() { debug_->break_disabled_ = old_state_; } |
private: |
Debug* debug_; |
- bool old_state_; |
+ bool previous_break_disabled_; |
+ bool previous_in_debug_event_listener_; |
DISALLOW_COPY_AND_ASSIGN(DisableBreak); |
}; |