Index: src/debug.cc |
diff --git a/src/debug.cc b/src/debug.cc |
index f4ab1159aae9a40a62736668d53b364c569a4ddd..5bdf53f058e528ff7faf9760f36f45b54a7685a8 100644 |
--- a/src/debug.cc |
+++ b/src/debug.cc |
@@ -757,13 +757,9 @@ bool Debug::CompileDebuggerScript(Isolate* isolate, int index) { |
Handle<JSFunction> function = |
factory->NewFunctionFromSharedFunctionInfo(function_info, context); |
- Handle<Object> exception; |
- MaybeHandle<Object> result = |
- Execution::TryCall(function, |
- handle(context->global_proxy()), |
- 0, |
- NULL, |
- &exception); |
+ MaybeHandle<Object> maybe_exception; |
+ MaybeHandle<Object> result = Execution::TryCall( |
+ function, handle(context->global_proxy()), 0, NULL, &maybe_exception); |
// Check for caught exceptions. |
if (result.is_null()) { |
@@ -774,7 +770,8 @@ bool Debug::CompileDebuggerScript(Isolate* isolate, int index) { |
isolate, "error_loading_debugger", &computed_location, |
Vector<Handle<Object> >::empty(), Handle<JSArray>()); |
DCHECK(!isolate->has_pending_exception()); |
- if (!exception.is_null()) { |
+ Handle<Object> exception; |
+ if (maybe_exception.ToHandle(&exception)) { |
isolate->set_pending_exception(*exception); |
MessageHandler::ReportMessage(isolate, NULL, message); |
isolate->clear_pending_exception(); |
@@ -2865,11 +2862,12 @@ void Debug::NotifyMessageHandler(v8::DebugEvent event, |
Handle<String> request_text = isolate_->factory()->NewStringFromTwoByte( |
command_text).ToHandleChecked(); |
Handle<Object> request_args[] = { request_text }; |
- Handle<Object> exception; |
Handle<Object> answer_value; |
Handle<String> answer; |
- MaybeHandle<Object> maybe_result = Execution::TryCall( |
- process_debug_request, cmd_processor, 1, request_args, &exception); |
+ MaybeHandle<Object> maybe_exception; |
+ MaybeHandle<Object> maybe_result = |
+ Execution::TryCall(process_debug_request, cmd_processor, 1, |
+ request_args, &maybe_exception); |
if (maybe_result.ToHandle(&answer_value)) { |
if (answer_value->IsUndefined()) { |
@@ -2887,10 +2885,15 @@ void Debug::NotifyMessageHandler(v8::DebugEvent event, |
Handle<Object> is_running_args[] = { answer }; |
maybe_result = Execution::Call( |
isolate_, is_running, cmd_processor, 1, is_running_args); |
- running = maybe_result.ToHandleChecked()->IsTrue(); |
+ Handle<Object> result; |
+ if (!maybe_result.ToHandle(&result)) break; |
+ running = result->IsTrue(); |
} else { |
- answer = Handle<String>::cast( |
- Execution::ToString(isolate_, exception).ToHandleChecked()); |
+ Handle<Object> exception; |
+ if (!maybe_exception.ToHandle(&exception)) break; |
+ Handle<Object> result; |
+ if (!Execution::ToString(isolate_, exception).ToHandle(&result)) break; |
+ answer = Handle<String>::cast(result); |
} |
// Return the result. |
@@ -2903,6 +2906,7 @@ void Debug::NotifyMessageHandler(v8::DebugEvent event, |
// running state (through a continue command) or auto continue is active |
// and there are no more commands queued. |
} while (!running || has_commands()); |
+ command_queue_.Clear(); |
} |