| Index: src/inspector/v8-debugger.cc
|
| diff --git a/src/inspector/v8-debugger.cc b/src/inspector/v8-debugger.cc
|
| index d393f81ad4a38a3a5ebf6ce4a92973c0fe91646b..2de5cf78091b3f26c95fdbe9e9093fb5da17ef01 100644
|
| --- a/src/inspector/v8-debugger.cc
|
| +++ b/src/inspector/v8-debugger.cc
|
| @@ -55,7 +55,8 @@ V8Debugger::V8Debugger(v8::Isolate* isolate, V8InspectorImpl* inspector)
|
| m_breakpointsActivated(true),
|
| m_runningNestedMessageLoop(false),
|
| m_ignoreScriptParsedEventsCounter(0),
|
| - m_maxAsyncCallStackDepth(0) {}
|
| + m_maxAsyncCallStackDepth(0),
|
| + m_pauseOnExceptionsState(DontPauseOnExceptions) {}
|
|
|
| V8Debugger::~V8Debugger() {}
|
|
|
| @@ -66,6 +67,8 @@ void V8Debugger::enable() {
|
| v8::Debug::SetDebugEventListener(m_isolate, &V8Debugger::v8DebugEventCallback,
|
| v8::External::New(m_isolate, this));
|
| m_debuggerContext.Reset(m_isolate, v8::Debug::GetDebugContext(m_isolate));
|
| + v8::Debug::ChangeBreakOnException(m_isolate, v8::NoBreakOnException);
|
| + m_pauseOnExceptionsState = DontPauseOnExceptions;
|
| compileDebuggerScript();
|
| }
|
|
|
| @@ -251,26 +254,20 @@ void V8Debugger::setBreakpointsActivated(bool activated) {
|
|
|
| V8Debugger::PauseOnExceptionsState V8Debugger::getPauseOnExceptionsState() {
|
| DCHECK(enabled());
|
| - v8::HandleScope scope(m_isolate);
|
| - v8::Local<v8::Context> context = debuggerContext();
|
| - v8::Context::Scope contextScope(context);
|
| -
|
| - v8::Local<v8::Value> argv[] = {v8::Undefined(m_isolate)};
|
| - v8::Local<v8::Value> result =
|
| - callDebuggerMethod("pauseOnExceptionsState", 0, argv).ToLocalChecked();
|
| - return static_cast<V8Debugger::PauseOnExceptionsState>(
|
| - result->Int32Value(context).FromJust());
|
| + return m_pauseOnExceptionsState;
|
| }
|
|
|
| void V8Debugger::setPauseOnExceptionsState(
|
| PauseOnExceptionsState pauseOnExceptionsState) {
|
| DCHECK(enabled());
|
| - v8::HandleScope scope(m_isolate);
|
| - v8::Context::Scope contextScope(debuggerContext());
|
| -
|
| - v8::Local<v8::Value> argv[] = {
|
| - v8::Int32::New(m_isolate, pauseOnExceptionsState)};
|
| - callDebuggerMethod("setPauseOnExceptionsState", 1, argv);
|
| + if (m_pauseOnExceptionsState == pauseOnExceptionsState) return;
|
| + if (pauseOnExceptionsState == DontPauseOnExceptions)
|
| + v8::Debug::ChangeBreakOnException(m_isolate, v8::NoBreakOnException);
|
| + else if (pauseOnExceptionsState == PauseOnUncaughtExceptions)
|
| + v8::Debug::ChangeBreakOnException(m_isolate, v8::BreakOnUncaughtException);
|
| + else
|
| + v8::Debug::ChangeBreakOnException(m_isolate, v8::BreakOnAnyException);
|
| + m_pauseOnExceptionsState = pauseOnExceptionsState;
|
| }
|
|
|
| void V8Debugger::setPauseOnNextStatement(bool pause) {
|
|
|