@@ -25,6 +25,9 @@ addToLibrary({
2525 return promiseInfo ;
2626 } ,
2727
28+ $addPromise__deps : [ '$promiseMap' ] ,
29+ $addPromise : ( promise ) => promiseMap . allocate ( { promise} ) ,
30+
2831 $idsToPromises__deps : [ '$getPromise' ] ,
2932 $idsToPromises : ( idBuf , size ) => {
3033 var promises = [ ] ;
@@ -133,7 +136,7 @@ addToLibrary({
133136 } ;
134137 } ,
135138
136- emscripten_promise_then__deps : [ '$promiseMap ' ,
139+ emscripten_promise_then__deps : [ '$addPromise ' ,
137140 '$getPromise' ,
138141 '$makePromiseCallback' ] ,
139142 emscripten_promise_then : ( id , onFulfilled , onRejected , userData ) = > {
@@ -142,33 +145,30 @@ addToLibrary({
142145#endif
143146 { { { runtimeKeepalivePush ( ) } } } ;
144147 var promise = getPromise ( id ) ;
145- var newId = promiseMap . allocate ( {
146- promise : promise . then ( makePromiseCallback ( onFulfilled , userData ) ,
147- makePromiseCallback ( onRejected , userData ) )
148- } ) ;
148+ var chainedPromise = promise . then ( makePromiseCallback ( onFulfilled , userData ) ,
149+ makePromiseCallback ( onRejected , userData ) ) ;
150+ var newId = addPromise ( chainedPromise ) ;
149151#if RUNTIME_DEBUG
150152 dbg ( `emscripten_promise_then: -> ${ newId } ` ) ;
151153#endif
152154 return newId ;
153155 } ,
154156
155- emscripten_promise_all__deps : [ '$promiseMap ' , '$idsToPromises' ] ,
157+ emscripten_promise_all__deps : [ '$addPromise ' , '$idsToPromises' ] ,
156158 emscripten_promise_all : ( idBuf , resultBuf , size ) => {
157159 var promises = idsToPromises ( idBuf , size ) ;
158160#if RUNTIME_DEBUG
159161 dbg ( `emscripten_promise_all: ${ promises } ` ) ;
160162#endif
161- var id = promiseMap . allocate ( {
162- promise : Promise . all ( promises ) . then ( ( results ) => {
163- if ( resultBuf ) {
164- for ( var i = 0 ; i < size ; i ++ ) {
165- var result = results [ i ] ;
166- { { { makeSetValue ( 'resultBuf' , `i*${ POINTER_SIZE } ` , 'result' , '*' ) } } } ;
167- }
163+ var id = addPromise ( Promise . all ( promises ) . then ( ( results ) => {
164+ if ( resultBuf ) {
165+ for ( var i = 0 ; i < size ; i ++ ) {
166+ var result = results [ i ] ;
167+ { { { makeSetValue ( 'resultBuf' , `i*${ POINTER_SIZE } ` , 'result' , '*' ) } } } ;
168168 }
169- return resultBuf ;
170- } )
171- } ) ;
169+ }
170+ return resultBuf ;
171+ } ) ) ;
172172#if RUNTIME_DEBUG
173173 dbg ( `create: ${ id } ` ) ;
174174#endif
@@ -185,34 +185,32 @@ addToLibrary({
185185 {{{ makeSetValue('ptr', C_STRUCTS.em_settled_result_t.value, 'value', '*') }}};
186186 },
187187
188- emscripten_promise_all_settled__deps: ['$promiseMap ', '$idsToPromises', '$setPromiseResult'],
188+ emscripten_promise_all_settled__deps: ['$addPromise ', '$idsToPromises', '$setPromiseResult'],
189189 emscripten_promise_all_settled: (idBuf, resultBuf, size) => {
190190 var promises = idsToPromises(idBuf, size);
191191#if RUNTIME_DEBUG
192192 dbg(` emscripten_promise_all_settled : ${promises } `);
193193#endif
194- var id = promiseMap.allocate({
195- promise: Promise.allSettled(promises).then((results) => {
196- if (resultBuf) {
197- var offset = resultBuf;
198- for (var i = 0; i < size; i++, offset += {{{ C_STRUCTS.em_settled_result_t.__size__ }}}) {
199- if (results[i].status === 'fulfilled') {
200- setPromiseResult(offset, true, results[i].value);
201- } else {
202- setPromiseResult(offset, false, results[i].reason);
203- }
194+ var id = addPromise(Promise.allSettled(promises).then((results) => {
195+ if (resultBuf) {
196+ var offset = resultBuf;
197+ for (var i = 0; i < size; i++, offset += {{{ C_STRUCTS.em_settled_result_t.__size__ }}}) {
198+ if (results[i].status === 'fulfilled') {
199+ setPromiseResult(offset, true, results[i].value);
200+ } else {
201+ setPromiseResult(offset, false, results[i].reason);
204202 }
205203 }
206- return resultBuf;
207- })
208- });
204+ }
205+ return resultBuf;
206+ })) ;
209207#if RUNTIME_DEBUG
210208 dbg(` create : ${id } `);
211209#endif
212210 return id;
213211 },
214212
215- emscripten_promise_any__deps: ['$promiseMap ', '$idsToPromises'],
213+ emscripten_promise_any__deps: ['$addPromise ', '$idsToPromises'],
216214 emscripten_promise_any: (idBuf, errorBuf, size) => {
217215 var promises = idsToPromises(idBuf, size);
218216#if RUNTIME_DEBUG
@@ -221,31 +219,27 @@ addToLibrary({
221219#if ASSERTIONS
222220 assert(typeof Promise.any != 'undefined', "Promise.any does not exist");
223221#endif
224- var id = promiseMap.allocate({
225- promise: Promise.any(promises).catch((err) => {
226- if (errorBuf) {
227- for (var i = 0; i < size; i++) {
228- {{{ makeSetValue('errorBuf', ` i * $ { POINTER_SIZE } `, 'err.errors[i]', '*') }}};
229- }
222+ var id = addPromise(Promise.any(promises).catch((err) => {
223+ if (errorBuf) {
224+ for (var i = 0; i < size; i++) {
225+ {{{ makeSetValue('errorBuf', ` i * $ { POINTER_SIZE } `, 'err.errors[i]', '*') }}};
230226 }
231- throw errorBuf;
232- })
233- });
227+ }
228+ throw errorBuf;
229+ })) ;
234230#if RUNTIME_DEBUG
235231 dbg(` create : ${id } `);
236232#endif
237233 return id;
238234 },
239235
240- emscripten_promise_race__deps: ['$promiseMap ', '$idsToPromises'],
236+ emscripten_promise_race__deps: ['$addPromise ', '$idsToPromises'],
241237 emscripten_promise_race: (idBuf, size) => {
242238 var promises = idsToPromises(idBuf, size);
243239#if RUNTIME_DEBUG
244240 dbg(` emscripten_promise_race : ${promises } `);
245241#endif
246- var id = promiseMap.allocate({
247- promise: Promise.race(promises)
248- });
242+ var id = addPromise(Promise.race(promises));
249243#if RUNTIME_DEBUG
250244 dbg(` create : ${id } `);
251245#endif
0 commit comments