Index: src/runtime/runtime-promise.cc |
diff --git a/src/runtime/runtime-promise.cc b/src/runtime/runtime-promise.cc |
index 6fbf4742c0868bbd95caff1d08454132bf1af32e..14667114ba9cedbd546c82ee7810859f8f2d8adf 100644 |
--- a/src/runtime/runtime-promise.cc |
+++ b/src/runtime/runtime-promise.cc |
@@ -110,15 +110,15 @@ bool GetDebugIdForAsyncFunction(Isolate* isolate, |
return true; |
} |
-void SetDebugInfo(Isolate* isolate, Handle<PromiseReactionJobInfo> info, |
- int status) { |
+void SetDebugInfo(Isolate* isolate, Handle<JSPromise> promise, |
+ Handle<PromiseReactionJobInfo> info, int status) { |
int id; |
PromiseDebugActionName name; |
if (GetDebugIdForAsyncFunction(isolate, info, &id)) { |
name = kDebugAsyncFunction; |
} else { |
- id = isolate->debug()->NextAsyncTaskId(handle(info->promise(), isolate)); |
+ id = isolate->debug()->NextAsyncTaskId(promise); |
DCHECK(status != v8::Promise::kPending); |
name = status == v8::Promise::kFulfilled ? kDebugPromiseResolve |
: kDebugPromiseReject; |
@@ -128,11 +128,11 @@ void SetDebugInfo(Isolate* isolate, Handle<PromiseReactionJobInfo> info, |
info->set_debug_name(name); |
} |
-void EnqueuePromiseReactionJob(Isolate* isolate, |
+void EnqueuePromiseReactionJob(Isolate* isolate, Handle<JSPromise> promise, |
Handle<PromiseReactionJobInfo> info, |
int status) { |
if (isolate->debug()->is_active()) { |
- SetDebugInfo(isolate, info, status); |
+ SetDebugInfo(isolate, promise, info, status); |
} |
isolate->EnqueueMicrotask(info); |
@@ -166,11 +166,11 @@ void PromiseFulfill(Isolate* isolate, Handle<JSPromise> promise, int status, |
isolate); |
Handle<PromiseReactionJobInfo> info = |
isolate->factory()->NewPromiseReactionJobInfo( |
- promise, value, tasks, handle(promise->deferred_promise(), isolate), |
+ value, tasks, handle(promise->deferred_promise(), isolate), |
handle(promise->deferred_on_resolve(), isolate), |
handle(promise->deferred_on_reject(), isolate), |
isolate->native_context()); |
- EnqueuePromiseReactionJob(isolate, info, status); |
+ EnqueuePromiseReactionJob(isolate, promise, info, status); |
} |
PromiseSet(isolate, promise, status, value); |
@@ -193,10 +193,11 @@ RUNTIME_FUNCTION(Runtime_PromiseReject) { |
RUNTIME_FUNCTION(Runtime_EnqueuePromiseReactionJob) { |
HandleScope scope(isolate); |
- DCHECK_EQ(2, args.length()); |
- CONVERT_ARG_HANDLE_CHECKED(PromiseReactionJobInfo, info, 0); |
- CONVERT_SMI_ARG_CHECKED(status, 1); |
- EnqueuePromiseReactionJob(isolate, info, status); |
+ DCHECK_EQ(3, args.length()); |
+ CONVERT_ARG_HANDLE_CHECKED(JSPromise, promise, 0); |
+ CONVERT_ARG_HANDLE_CHECKED(PromiseReactionJobInfo, info, 1); |
+ CONVERT_SMI_ARG_CHECKED(status, 2); |
+ EnqueuePromiseReactionJob(isolate, promise, info, status); |
return isolate->heap()->undefined_value(); |
} |