Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: src/isolate.cc

Issue 2590563003: [promises] Remove deferred object (Closed)
Patch Set: add comments Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/isolate.cc
diff --git a/src/isolate.cc b/src/isolate.cc
index 46805d26df30d63f2376925973ad25441c0f8c7b..e1a099a9a10d74f91eb6aa71f005c74f588c4aba 100644
--- a/src/isolate.cc
+++ b/src/isolate.cc
@@ -3236,15 +3236,24 @@ void Isolate::PromiseReactionJob(Handle<PromiseReactionJobInfo> info,
Handle<Object> tasks(info->tasks(), this);
Handle<JSFunction> promise_handle_fn = promise_handle();
Handle<Object> undefined = factory()->undefined_value();
- Handle<Object> deferred(info->deferred(), this);
+ Handle<Object> deferred_promise(info->deferred_promise(), this);
- if (deferred->IsFixedArray()) {
+ if (deferred_promise->IsFixedArray()) {
DCHECK(tasks->IsFixedArray());
- Handle<FixedArray> deferred_arr = Handle<FixedArray>::cast(deferred);
+ Handle<FixedArray> deferred_promise_arr =
+ Handle<FixedArray>::cast(deferred_promise);
+ Handle<FixedArray> deferred_on_resolve_arr(
+ FixedArray::cast(info->deferred_on_resolve()), this);
+ Handle<FixedArray> deferred_on_reject_arr(
+ FixedArray::cast(info->deferred_on_reject()), this);
Handle<FixedArray> tasks_arr = Handle<FixedArray>::cast(tasks);
- for (int i = 0; i < deferred_arr->length(); i++) {
- Handle<Object> argv[] = {promise, value, handle(tasks_arr->get(i), this),
- handle(deferred_arr->get(i), this)};
+ for (int i = 0; i < deferred_promise_arr->length(); i++) {
+ Handle<Object> argv[] = {promise,
+ value,
+ handle(tasks_arr->get(i), this),
+ handle(deferred_promise_arr->get(i), this),
+ handle(deferred_on_resolve_arr->get(i), this),
+ handle(deferred_on_reject_arr->get(i), this)};
*result = Execution::TryCall(this, promise_handle_fn, undefined,
arraysize(argv), argv, maybe_exception);
// If execution is terminating, just bail out.
@@ -3253,7 +3262,12 @@ void Isolate::PromiseReactionJob(Handle<PromiseReactionJobInfo> info,
}
}
} else {
- Handle<Object> argv[] = {promise, value, tasks, deferred};
+ Handle<Object> argv[] = {promise,
+ value,
+ tasks,
+ deferred_promise,
+ handle(info->deferred_on_resolve(), this),
+ handle(info->deferred_on_reject(), this)};
*result = Execution::TryCall(this, promise_handle_fn, undefined,
arraysize(argv), argv, maybe_exception);
}
« src/builtins/builtins-promise.cc ('K') | « src/factory.cc ('k') | src/js/async-await.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698