summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2021-05-17 19:56:59 +0200
committerMichaël Zasso <targos@protonmail.com>2021-06-10 11:11:39 +0200
commitbecfad1e6da6ddbcb8180422f55b9447b535abbf (patch)
tree68de8db069aec248fe2da96c3153b3591eef4f59 /deps
parentc67828549876ca915c7999ed383b294c5138650c (diff)
downloadnode-new-becfad1e6da6ddbcb8180422f55b9447b535abbf.tar.gz
deps: V8: cherry-pick fa4cb172cde2
Original commit message: [runtime] Fix Promise.all context promise hooks We have to take the slow path in Promise.all if context promise hooks are set. The fast-path doesn't create intermediate promises by default. Bug: chromium:1204132, v8:11025 Change-Id: Ide92de00a4f6df05e0ddbc8814f6673bd667f426 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2866771 Reviewed-by: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74326} Refs: https://github.com/v8/v8/commit/fa4cb172cde256a1e71d675d81fbb4b85d1e5f66 PR-URL: https://github.com/nodejs/node/pull/38273 Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Mary Marchini <oss@mmarchini.me>
Diffstat (limited to 'deps')
-rw-r--r--deps/v8/src/builtins/promise-all.tq3
-rw-r--r--deps/v8/test/mjsunit/promise-hooks.js13
2 files changed, 13 insertions, 3 deletions
diff --git a/deps/v8/src/builtins/promise-all.tq b/deps/v8/src/builtins/promise-all.tq
index 294c5e911c..5ab64a167d 100644
--- a/deps/v8/src/builtins/promise-all.tq
+++ b/deps/v8/src/builtins/promise-all.tq
@@ -231,8 +231,7 @@ Reject(Object) {
// the PromiseReaction (aka we can pass undefined to
// PerformPromiseThen), since this is only necessary for DevTools and
// PromiseHooks.
- if (promiseResolveFunction != Undefined ||
- IsIsolatePromiseHookEnabledOrDebugIsActiveOrHasAsyncEventDelegate() ||
+ if (promiseResolveFunction != Undefined || NeedsAnyPromiseHooks() ||
IsPromiseSpeciesProtectorCellInvalid() || Is<Smi>(nextValue) ||
!IsPromiseThenLookupChainIntact(
nativeContext, UnsafeCast<HeapObject>(nextValue).map)) {
diff --git a/deps/v8/test/mjsunit/promise-hooks.js b/deps/v8/test/mjsunit/promise-hooks.js
index bf51777dce..f7c1558c1d 100644
--- a/deps/v8/test/mjsunit/promise-hooks.js
+++ b/deps/v8/test/mjsunit/promise-hooks.js
@@ -246,7 +246,7 @@ exceptions();
(function regress1126309() {
function __f_16(test) {
test();
- d8.promise.setHooks( undefined, () => {});
+ d8.promise.setHooks(undefined, () => {});
%PerformMicrotaskCheckpoint();
d8.promise.setHooks();
}
@@ -262,3 +262,14 @@ exceptions();
%PerformMicrotaskCheckpoint();
d8.promise.setHooks();
})();
+
+
+(function promiseAll() {
+ let initCount = 0;
+ d8.promise.setHooks(() => { initCount++});
+ Promise.all([Promise.resolve(1)]);
+ %PerformMicrotaskCheckpoint();
+ assertEquals(initCount, 3);
+
+ d8.promise.setHooks();
+})();