Chromium Code Reviews| Index: src/runtime/runtime-internal.cc |
| diff --git a/src/runtime/runtime-internal.cc b/src/runtime/runtime-internal.cc |
| index 3de0f16b1e63233ca72bdb4ab8fa311e3d9653b5..9059558189dc393ad81dbd245e24a6bbf10a078c 100644 |
| --- a/src/runtime/runtime-internal.cc |
| +++ b/src/runtime/runtime-internal.cc |
| @@ -274,12 +274,21 @@ RUNTIME_FUNCTION(Runtime_ThrowApplyNonFunction) { |
| RUNTIME_FUNCTION(Runtime_PromiseRejectEvent) { |
| - DCHECK(args.length() == 3); |
| + DCHECK(args.length() == 4); |
| HandleScope scope(isolate); |
| CONVERT_ARG_HANDLE_CHECKED(JSObject, promise, 0); |
| CONVERT_ARG_HANDLE_CHECKED(Object, value, 1); |
| CONVERT_BOOLEAN_ARG_CHECKED(debug_event, 2); |
| - if (debug_event) isolate->debug()->OnPromiseReject(promise, value); |
| + CONVERT_BOOLEAN_ARG_CHECKED(from_promise_reject, 3); |
|
adamk
2016/08/23 22:29:27
Rather than taking a second bool arg, you could sp
Dan Ehrenberg
2016/08/23 23:28:38
Very good point, done.
|
| + if (debug_event) { |
| + Handle<JSObject> rejected_promise = promise; |
| + if (from_promise_reject) { |
| + Handle<Object> promise_on_stack = isolate->GetPromiseOnStackOnThrow(); |
| + if (promise_on_stack->IsJSObject()) |
| + rejected_promise = Handle<JSObject>::cast(promise_on_stack); |
| + } |
| + isolate->debug()->OnPromiseReject(rejected_promise, value); |
| + } |
| Handle<Symbol> key = isolate->factory()->promise_has_handler_symbol(); |
| // Do not report if we actually have a handler. |
| if (JSReceiver::GetDataProperty(promise, key)->IsUndefined(isolate)) { |