Skip to content

Commit ec40bc5

Browse files
authored
Fix regression with instantiateWasm + MODULARIZE (#23579)
We didn't have test coverage of this case and it was broken in #23157. Fixes: #23577
1 parent 7924a23 commit ec40bc5

File tree

62 files changed

+90
-71
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+90
-71
lines changed

src/preamble.js

+15-11
Original file line numberDiff line numberDiff line change
@@ -1015,17 +1015,21 @@ function getWasmImports() {
10151015
// Also pthreads and wasm workers initialize the wasm instance through this
10161016
// path.
10171017
if (Module['instantiateWasm']) {
1018-
try {
1019-
return Module['instantiateWasm'](info, receiveInstance);
1020-
} catch(e) {
1021-
err(`Module.instantiateWasm callback failed with error: ${e}`);
1022-
#if MODULARIZE
1023-
// If instantiation fails, reject the module ready promise.
1024-
readyPromiseReject(e);
1025-
#else
1026-
return false;
1027-
#endif
1028-
}
1018+
return new Promise((resolve, reject) => {
1019+
#if ASSERTIONS
1020+
try {
1021+
#endif
1022+
Module['instantiateWasm'](info, (mod, inst) => {
1023+
receiveInstance(mod, inst);
1024+
resolve(mod.exports);
1025+
});
1026+
#if ASSERTIONS
1027+
} catch(e) {
1028+
err(`Module.instantiateWasm callback failed with error: ${e}`);
1029+
reject(e);
1030+
}
1031+
#endif
1032+
});
10291033
}
10301034
#endif
10311035

Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8308
1+
8288
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20171
1+
20132
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8291
1+
8273
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20150
1+
20111
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9309
1+
9289
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
23939
1+
23900
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8252
1+
8231
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20063
1+
20024
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8252
1+
8231
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20063
1+
20024
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8318
1+
8296
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20247
1+
20208
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
9312
1+
9292
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
23939
1+
23900
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8308
1+
8288
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20171
1+
20132
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3517
1+
3496
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7580
1+
7541
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7610
1+
7591
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
18718
1+
18679
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2751
1+
2736
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5890
1+
5851
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
7829
1+
7874
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20888
1+
20992
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2612
1+
2605
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6744
1+
6719
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2273
1+
2257
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4684
1+
4645
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2226
1+
2212
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4626
1+
4587
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2226
1+
2212
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4626
1+
4587
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2226
1+
2212
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4626
1+
4587
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5945
1+
5931
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
13145
1+
13106
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1638
1+
1620
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3539
1+
3500
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2226
1+
2212
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4626
1+
4587
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1827
1+
1814
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3902
1+
3863
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1870
1+
1858
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3959
1+
3920
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2280
1+
2265
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4794
1+
4755
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2429
1+
2413
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
5078
1+
5039
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2133
1+
2117
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4496
1+
4457
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2099
1+
2083
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
4428
1+
4389
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1856
1+
1844
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3958
1+
3919
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1870
1+
1858
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3959
1+
3920
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1870
1+
1858
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3959
1+
3920
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
52415
1+
52550
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
28163
1+
28168

test/test_other.py

+15
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,20 @@ def metafunc(self, backend, *args, **kwargs):
124124
return metafunc
125125

126126

127+
def also_with_modularize(f):
128+
assert callable(f)
129+
130+
@wraps(f)
131+
def metafunc(self, modularize, *args, **kwargs):
132+
if modularize:
133+
self.emcc_args += ['--extern-post-js', test_file('modularize_post_js.js'), '-sMODULARIZE']
134+
f(self, *args, **kwargs)
135+
136+
parameterize(metafunc, {'': (False,),
137+
'modularize': (True,)})
138+
return metafunc
139+
140+
127141
def also_with_wasmfs_all_backends(f):
128142
assert callable(f)
129143

@@ -15543,6 +15557,7 @@ def test_invalid_export_name(self):
1554315557
err = self.expect_fail([EMCC, 'test.c'])
1554415558
self.assertContained('emcc: error: invalid export name: my.func', err)
1554515559

15560+
@also_with_modularize
1554615561
def test_instantiate_wasm(self):
1554715562
create_file('pre.js', '''
1554815563
Module['instantiateWasm'] = (imports, successCallback) => {

0 commit comments

Comments
 (0)