Index: src/debug/debug.cc |
diff --git a/src/debug/debug.cc b/src/debug/debug.cc |
index 747093e7492cb2119ee3d8008ef9492f713d56cf..b7a2f27a17d505f85f882925c6a58945a0c4b34e 100644 |
--- a/src/debug/debug.cc |
+++ b/src/debug/debug.cc |
@@ -1682,43 +1682,33 @@ void Debug::OnThrow(Handle<Object> exception) { |
} |
} |
- |
-void Debug::OnPromiseReject(Handle<JSObject> promise, Handle<Object> value) { |
+void Debug::OnPromiseReject(Handle<Object> promise, Handle<Object> value) { |
if (in_debug_scope() || ignore_events()) return; |
HandleScope scope(isolate_); |
// Check whether the promise has been marked as having triggered a message. |
Handle<Symbol> key = isolate_->factory()->promise_debug_marker_symbol(); |
- if (JSReceiver::GetDataProperty(promise, key)->IsUndefined(isolate_)) { |
+ if (!promise->IsJSObject() || |
+ JSReceiver::GetDataProperty(Handle<JSObject>::cast(promise), key) |
+ ->IsUndefined(isolate_)) { |
OnException(value, promise); |
} |
} |
-MaybeHandle<Object> Debug::PromiseHasUserDefinedRejectHandler( |
- Handle<JSObject> promise) { |
- Handle<JSFunction> fun = isolate_->promise_has_user_defined_reject_handler(); |
- return Execution::Call(isolate_, fun, promise, 0, NULL); |
-} |
- |
- |
void Debug::OnException(Handle<Object> exception, Handle<Object> promise) { |
Isolate::CatchType catch_type = isolate_->PredictExceptionCatcher(); |
// Don't notify listener of exceptions that are internal to a desugaring. |
if (catch_type == Isolate::CAUGHT_BY_DESUGARING) return; |
- bool uncaught = (catch_type == Isolate::NOT_CAUGHT); |
+ bool uncaught = catch_type == Isolate::NOT_CAUGHT; |
if (promise->IsJSObject()) { |
Handle<JSObject> jspromise = Handle<JSObject>::cast(promise); |
// Mark the promise as already having triggered a message. |
Handle<Symbol> key = isolate_->factory()->promise_debug_marker_symbol(); |
JSObject::SetProperty(jspromise, key, key, STRICT).Assert(); |
// Check whether the promise reject is considered an uncaught exception. |
- Handle<Object> has_reject_handler; |
- ASSIGN_RETURN_ON_EXCEPTION_VALUE( |
- isolate_, has_reject_handler, |
- PromiseHasUserDefinedRejectHandler(jspromise), /* void */); |
- uncaught = has_reject_handler->IsFalse(isolate_); |
+ uncaught = !isolate_->PromiseHasUserDefinedRejectHandler(jspromise); |
} |
// Bail out if exception breaks are not active |
if (uncaught) { |