Skip to content

Commit b4ec2f4

Browse files
committed
Adds modularized promise functions to externs
1 parent f30e444 commit b4ec2f4

File tree

4 files changed

+22
-8
lines changed

4 files changed

+22
-8
lines changed

emcc.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3355,13 +3355,14 @@ def modularize():
33553355

33563356
src = '''
33573357
function(%(EXPORT_NAME)s) {
3358-
return new Promise((returned_promise_resolve, returned_promise_reject) => {
3359-
3358+
var returned_promise_resolve, returned_promise_reject;
3359+
var promise = new Promise((resolve, reject) => (returned_promise_resolve=resolve, returned_promise_reject=reject));
3360+
33603361
%(EXPORT_NAME)s = %(EXPORT_NAME)s || {};
33613362
33623363
%(src)s
33633364
3364-
});
3365+
return promise;
33653366
}
33663367
''' % {
33673368
'EXPORT_NAME': shared.Settings.EXPORT_NAME,

src/closure-externs/closure-externs.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -994,3 +994,11 @@ var threadInfoStruct;
994994
var selfThreadId;
995995
/** @suppress {duplicate} */
996996
var noExitRuntime;
997+
998+
// These functions are declared in emcc.py but used in postamble.js; we need
999+
// to explicitly tell Closure Compiler about their existence since the
1000+
// postamble is optimized independently
1001+
/** @type {Function} */
1002+
var returned_promise_resolve;
1003+
/** @type {Function} */
1004+
var returned_promise_reject;

src/postamble.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,12 @@ if (memoryInitializer) {
6363
};
6464
var doBrowserLoad = function() {
6565
readAsync(memoryInitializer, applyMemoryInitializer, function() {
66-
returned_promise_reject(new Error('could not load memory initializer ' + memoryInitializer));
66+
var e = new Error('could not load memory initializer ' + memoryInitializer);
67+
#if MODULARIZE
68+
returned_promise_reject(e);
69+
#else
70+
throw e;
71+
#endif
6772
});
6873
};
6974
#if SUPPORT_BASE64_EMBEDDING

tests/test_browser.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3353,10 +3353,10 @@ def test_minimal_runtime_modularize(self):
33533353
@requires_sync_compilation
33543354
def test_modularize(self):
33553355
for opts in [
3356-
[],
3357-
['-O1'],
3358-
['-O2', '-profiling'],
3359-
['-O2'],
3356+
[],
3357+
['-O1'],
3358+
['-O2', '-profiling'],
3359+
['-O2'],
33603360
['-O2', '--closure', '1']
33613361
]:
33623362
for args, code in [

0 commit comments

Comments
 (0)