Skip to content

Commit 3113ff0

Browse files
authored
Cleanups to src/library_promise.js. NFC (#19565)
Split out from #19553
1 parent 6b3df4c commit 3113ff0

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

src/library_promise.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,17 @@ mergeInto(LibraryManager.library, {
179179
return id;
180180
},
181181

182-
emscripten_promise_all_settled__deps: ['$promiseMap', '$idsToPromises'],
182+
$setPromiseResult__internal: true,
183+
$setPromiseResult: (ptr, fulfill, value) => {
184+
#if ASSERTIONS
185+
assert(typeof value == 'undefined' || typeof value === 'number', `native promises can only handle numeric results (${value} ${typeof value})`);
186+
#endif
187+
var result = fulfill ? {{{ cDefs.EM_PROMISE_FULFILL }}} : {{{ cDefs.EM_PROMISE_REJECT }}}
188+
{{{ makeSetValue('ptr', C_STRUCTS.em_settled_result_t.result, 'result', 'i32') }}};
189+
{{{ makeSetValue('ptr', C_STRUCTS.em_settled_result_t.value, 'value', '*') }}};
190+
},
191+
192+
emscripten_promise_all_settled__deps: ['$promiseMap', '$idsToPromises', '$setPromiseResult'],
183193
emscripten_promise_all_settled: function(idBuf, resultBuf, size) {
184194
var promises = idsToPromises(idBuf, size);
185195
#if RUNTIME_DEBUG
@@ -188,22 +198,12 @@ mergeInto(LibraryManager.library, {
188198
var id = promiseMap.allocate({
189199
promise: Promise.allSettled(promises).then((results) => {
190200
if (resultBuf) {
191-
for (var i = 0; i < size; i++) {
192-
var baseOffset = i * {{{ C_STRUCTS.em_settled_result_t.__size__ }}};
193-
var resultOffset =
194-
baseOffset + {{{ C_STRUCTS.em_settled_result_t.result }}};
195-
var valueOffset =
196-
baseOffset + {{{ C_STRUCTS.em_settled_result_t.value }}};
201+
var offset = resultBuf;
202+
for (var i = 0; i < size; i++, offset += {{{ C_STRUCTS.em_settled_result_t.__size__ }}}) {
197203
if (results[i].status === 'fulfilled') {
198-
var fulfill = {{{ cDefs.EM_PROMISE_FULFILL }}};
199-
{{{ makeSetValue('resultBuf', 'resultOffset', 'fulfill', 'i32') }}};
200-
{{{ makeSetValue('resultBuf', 'valueOffset', 'results[i].value', '*') }}};
204+
setPromiseResult(offset, true, results[i].value);
201205
} else {
202-
var reject = {{{ cDefs.EM_PROMISE_REJECT }}};
203-
{{{ makeSetValue('resultBuf', 'resultOffset', 'reject', 'i32') }}};
204-
// Closure can't type `reason` in some contexts.
205-
var reason = /** @type {number} */ (results[i].reason);
206-
{{{ makeSetValue('resultBuf', 'valueOffset', 'reason', '*') }}};
206+
setPromiseResult(offset, false, results[i].reason);
207207
}
208208
}
209209
}
@@ -216,7 +216,6 @@ mergeInto(LibraryManager.library, {
216216
return id;
217217
},
218218
219-
220219
emscripten_promise_any__deps: [
221220
'$promiseMap', '$idsToPromises',
222221
#if !SUPPORTS_PROMISE_ANY && !INCLUDE_FULL_LIBRARY
@@ -260,5 +259,5 @@ mergeInto(LibraryManager.library, {
260259
dbg(`create: ${id}`);
261260
#endif
262261
return id;
263-
}
262+
},
264263
});

0 commit comments

Comments
 (0)