From 36c5ca9cf04e7a3054c18d5175c33b7898ef48d6 Mon Sep 17 00:00:00 2001 From: Sanjaiyan Parthipan Date: Wed, 20 Dec 2023 23:27:56 +0530 Subject: [PATCH 1/4] perf: Reduce memory usage --- lib/internal/per_context/primordials.js | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/lib/internal/per_context/primordials.js b/lib/internal/per_context/primordials.js index c4f2b12aff2cba..f5c61e6b38619c 100644 --- a/lib/internal/per_context/primordials.js +++ b/lib/internal/per_context/primordials.js @@ -520,12 +520,13 @@ primordials.SafePromiseAllReturnArrayLike = (promises, mapFn) => if (length === 0) resolve(returnVal); let pendingPromises = length; + const handlePromiseResult = (i) => (result) => { + returnVal[i] = result; + if (--pendingPromises === 0) resolve(returnVal); + }; for (let i = 0; i < length; i++) { const promise = mapFn != null ? mapFn(promises[i], i) : promises[i]; - PromisePrototypeThen(PromiseResolve(promise), (result) => { - returnVal[i] = result; - if (--pendingPromises === 0) resolve(returnVal); - }, reject); + PromisePrototypeThen(PromiseResolve(promise), handlePromiseResult(i), reject); } }); @@ -541,11 +542,14 @@ primordials.SafePromiseAllReturnVoid = (promises, mapFn) => new Promise((resolve, reject) => { let pendingPromises = promises.length; if (pendingPromises === 0) resolve(); + const onPromiseSettled = () => { + if (--pendingPromises === 0) { + resolve(); + } + }; for (let i = 0; i < promises.length; i++) { const promise = mapFn != null ? mapFn(promises[i], i) : promises[i]; - PromisePrototypeThen(PromiseResolve(promise), () => { - if (--pendingPromises === 0) resolve(); - }, reject); + PromisePrototypeThen(PromiseResolve(promise), onPromiseSettled, reject); } }); From c8ba57d1f28749b974491443c21030f14c8cbb84 Mon Sep 17 00:00:00 2001 From: Sanjaiyan Parthipan Date: Wed, 20 Dec 2023 23:28:21 +0530 Subject: [PATCH 2/4] revert: doubt code --- lib/internal/per_context/primordials.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/internal/per_context/primordials.js b/lib/internal/per_context/primordials.js index f5c61e6b38619c..3269e39ad57d68 100644 --- a/lib/internal/per_context/primordials.js +++ b/lib/internal/per_context/primordials.js @@ -520,13 +520,12 @@ primordials.SafePromiseAllReturnArrayLike = (promises, mapFn) => if (length === 0) resolve(returnVal); let pendingPromises = length; - const handlePromiseResult = (i) => (result) => { - returnVal[i] = result; - if (--pendingPromises === 0) resolve(returnVal); - }; for (let i = 0; i < length; i++) { const promise = mapFn != null ? mapFn(promises[i], i) : promises[i]; - PromisePrototypeThen(PromiseResolve(promise), handlePromiseResult(i), reject); + PromisePrototypeThen(PromiseResolve(promise), (result) => { + returnVal[i] = result; + if (--pendingPromises === 0) resolve(returnVal); + }, reject); } }); From 1a8ba62b50849988b1e6fea40738f825480189da Mon Sep 17 00:00:00 2001 From: Sanjaiyan Parthipan Date: Thu, 21 Dec 2023 00:20:43 +0530 Subject: [PATCH 3/4] Update lib/internal/per_context/primordials.js Fix variable naming Co-authored-by: Antoine du Hamel --- lib/internal/per_context/primordials.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/per_context/primordials.js b/lib/internal/per_context/primordials.js index 3269e39ad57d68..87ca4418352c21 100644 --- a/lib/internal/per_context/primordials.js +++ b/lib/internal/per_context/primordials.js @@ -541,7 +541,7 @@ primordials.SafePromiseAllReturnVoid = (promises, mapFn) => new Promise((resolve, reject) => { let pendingPromises = promises.length; if (pendingPromises === 0) resolve(); - const onPromiseSettled = () => { + const onFulfilled = () => { if (--pendingPromises === 0) { resolve(); } From c72264cc2fc567de7cf4efe782eabe7686ba48a6 Mon Sep 17 00:00:00 2001 From: Sanjaiyan Parthipan Date: Thu, 21 Dec 2023 00:20:54 +0530 Subject: [PATCH 4/4] Update lib/internal/per_context/primordials.js Fix variable naming Co-authored-by: Antoine du Hamel --- lib/internal/per_context/primordials.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/per_context/primordials.js b/lib/internal/per_context/primordials.js index 87ca4418352c21..0a6d5fc72c1132 100644 --- a/lib/internal/per_context/primordials.js +++ b/lib/internal/per_context/primordials.js @@ -548,7 +548,7 @@ primordials.SafePromiseAllReturnVoid = (promises, mapFn) => }; for (let i = 0; i < promises.length; i++) { const promise = mapFn != null ? mapFn(promises[i], i) : promises[i]; - PromisePrototypeThen(PromiseResolve(promise), onPromiseSettled, reject); + PromisePrototypeThen(PromiseResolve(promise), onFulfilled, reject); } });