Skip to content

Commit 68ee2af

Browse files
authored
Replace Module["asm"] with wasmExports global (#19816)
This brings the regular runtime closer `MINIMAL_RUNTIME` which uses the global `asm` to refer to exports object. As a followup we should consider merging these two symbols.
1 parent f2fc713 commit 68ee2af

File tree

65 files changed

+194
-172
lines changed

Some content is hidden

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

65 files changed

+194
-172
lines changed

ChangeLog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ See docs/process.md for more on how version tagging works.
2828
(Higher-level functions are expected to handle that themselves, before calling.)
2929
This only effects builds that use `-sSINGLE_FILE` or `--memory-init-file`.
3030
(#19792)
31+
- The `asm` property of the Module object (which held the raw exports of the
32+
wasm module) has been removed. Internally, this is now accessed via the
33+
`wasmExports` global. If necessary, it is possible to export `wasmExports`
34+
on the Module object using `-sEXPORTED_RUNTIME_METHODS=wasmExports`. (#19816)
3135

3236
3.1.43 - 07/10/23
3337
-----------------

emscripten.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ def install_wrapper(sym):
753753
# first use.
754754
args = [f'a{i}' for i in range(nargs)]
755755
args = ', '.join(args)
756-
wrapper += f"({args}) => ({mangled} = {exported}Module['asm']['{name}'])({args});"
756+
wrapper += f"({args}) => ({mangled} = {exported}wasmExports['{name}'])({args});"
757757
else:
758758
wrapper += 'asm["%s"]' % name
759759

site/source/docs/optimizing/Module-Splitting.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ included in the profile.
124124
Here’s the function to write the profile and our new main function::
125125

126126
EM_JS(void, write_profile, (), {
127-
var __write_profile = Module['asm']['__write_profile'];
127+
var __write_profile = wasmExports['__write_profile'];
128128
if (__write_profile) {
129129

130130
// Get the size of the profile and allocate a buffer for it.
@@ -338,7 +338,7 @@ be called either.
338338

339339
When eagerly instantiating the secondary module, the imports object should be::
340340

341-
{'primary': Module['asm']}
341+
{'primary': wasmExports}
342342

343343
Debugging
344344
---------

src/library_async.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,9 @@ mergeInto(LibraryManager.library, {
267267
getDataRewindFunc: function(ptr) {
268268
var id = {{{ makeGetValue('ptr', C_STRUCTS.asyncify_data_s.rewind_id, 'i32') }}};
269269
var name = Asyncify.callStackIdToName[id];
270-
var func = Module['asm'][name];
270+
var func = wasmExports[name];
271271
#if RELOCATABLE
272-
// Exported functions in side modules are not listed in `Module['asm']`,
272+
// Exported functions in side modules are not listed in `wasmExports`,
273273
// So we should use `resolveGlobalSymbol` helper function, which is defined in `library_dylink.js`.
274274
if (!func) {
275275
func = resolveGlobalSymbol(name, false).sym;
@@ -522,8 +522,8 @@ mergeInto(LibraryManager.library, {
522522
_load_secondary_module__sig: 'v',
523523
_load_secondary_module: async function() {
524524
// Mark the module as loading for the wasm module (so it doesn't try to load it again).
525-
Module['asm']['load_secondary_module_status'].value = 1;
526-
var imports = {'primary': Module['asm']};
525+
wasmExports['load_secondary_module_status'].value = 1;
526+
var imports = {'primary': wasmExports};
527527
// Replace '.wasm' suffix with '.deferred.wasm'.
528528
var deferred = wasmBinaryFile.slice(0, -5) + '.deferred.wasm';
529529
await new Promise((resolve) => {

src/library_exceptions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -331,7 +331,7 @@ var LibraryExceptions = {
331331
#if RELOCATABLE
332332
return ___cpp_exception; // defined in library.js
333333
#else
334-
return Module['asm']['__cpp_exception'];
334+
return wasmExports['__cpp_exception'];
335335
#endif
336336
},
337337

src/library_exports.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ mergeInto(LibraryManager.library, {
1616
var exportedFunc = asm[name];
1717
#else
1818
// In regular runtime, exports are available on the Module object.
19-
var exportedFunc = Module['asm'][name];
19+
var exportedFunc = wasmExports[name];
2020
#endif
2121
if (exportedFunc) {
2222
// Record the created function pointer to each function object,

src/modules.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,8 @@ function exportRuntime() {
382382
'abort',
383383
'keepRuntimeAlive',
384384
'wasmMemory',
385+
'wasmTable',
386+
'wasmExports',
385387
];
386388

387389
// These are actually native wasm functions these days but we allow exporting

src/parseTools.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -865,6 +865,16 @@ function hasExportedSymbol(sym) {
865865
return WASM_EXPORTS.has(sym);
866866
}
867867

868+
// Called when global runtime symbols such as wasmMemory, wasmExports and
869+
// wasmTable are set. In this case we maybe need to re-export them on the
870+
// Module object.
871+
function receivedSymbol(sym) {
872+
if (EXPORTED_RUNTIME_METHODS.includes(sym)) {
873+
return `Module['${sym}'] = ${sym};`
874+
}
875+
return '';
876+
}
877+
868878
// JS API I64 param handling: if we have BigInt support, the ABI is simple,
869879
// it is a BigInt. Otherwise, we legalize into pairs of i32s.
870880
function defineI64Param(name) {

src/postamble_minimal.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ WebAssembly.instantiate(Module['wasm'], imports).then((output) => {
142142

143143
#if !LibraryManager.has('library_exports.js') && !EMBIND
144144
// If not using the emscripten_get_exported_function() API or embind, keep the
145-
// 'asm' exports variable in local scope to this instantiate function to save
145+
// `asm` exports variable in local scope to this instantiate function to save
146146
// code size. (otherwise access it without to export it to outer scope)
147147
var
148148
#endif

src/preamble.js

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ if (typeof WebAssembly != 'object') {
5353
// Wasm globals
5454

5555
var wasmMemory;
56+
var wasmExports;
5657

5758
#if SHARED_MEMORY
5859
// For sending to workers.
@@ -471,7 +472,7 @@ function abort(what) {
471472
#if WASM_EXCEPTIONS == 1
472473
// See above, in the meantime, we resort to wasm code for trapping.
473474
//
474-
// In case abort() is called before the module is initialized, Module['asm']
475+
// In case abort() is called before the module is initialized, wasmExports
475476
// and its exported '__trap' function is not available, in which case we throw
476477
// a RuntimeError.
477478
//
@@ -527,7 +528,7 @@ function createExportWrapper(name) {
527528
#if EXIT_RUNTIME
528529
assert(!runtimeExited, `native function \`${name}\` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)`);
529530
#endif
530-
var f = Module['asm'][name];
531+
var f = wasmExports[name];
531532
assert(f, `exported native function \`${name}\` not found`);
532533
return f.apply(null, arguments);
533534
};
@@ -714,7 +715,7 @@ var splitModuleProxyHandler = {
714715
throw new Error('Placeholder function "' + prop + '" should not be called when using JSPI.');
715716
#else
716717
err('placeholder function called: ' + prop);
717-
var imports = {'primary': Module['asm']};
718+
var imports = {'primary': wasmExports};
718719
// Replace '.wasm' suffix with '.deferred.wasm'.
719720
var deferred = wasmBinaryFile.slice(0, -5) + '.deferred.wasm'
720721
loadSplitModule(deferred, imports, prop);
@@ -979,18 +980,20 @@ function createWasm() {
979980
exports = applySignatureConversions(exports);
980981
#endif
981982

982-
Module['asm'] = exports;
983+
wasmExports = exports;
984+
{{{ receivedSymbol('wasmExports') }}}
983985

984986
#if PTHREADS
985987
#if MAIN_MODULE
986-
registerTLSInit(Module['asm']['_emscripten_tls_init'], instance.exports, metadata);
988+
registerTLSInit(wasmExports['_emscripten_tls_init'], instance.exports, metadata);
987989
#else
988-
registerTLSInit(Module['asm']['_emscripten_tls_init']);
990+
registerTLSInit(wasmExports['_emscripten_tls_init']);
989991
#endif
990992
#endif
991993

992994
#if !IMPORTED_MEMORY
993-
wasmMemory = Module['asm']['memory'];
995+
wasmMemory = wasmExports['memory'];
996+
{{{ receivedSymbol('wasmMemory') }}}
994997
#if ASSERTIONS
995998
assert(wasmMemory, "memory not found in wasm exports");
996999
// This assertion doesn't hold when emscripten is run in --post-link
@@ -1005,7 +1008,8 @@ function createWasm() {
10051008
#endif
10061009

10071010
#if !RELOCATABLE
1008-
wasmTable = Module['asm']['__indirect_function_table'];
1011+
wasmTable = wasmExports['__indirect_function_table'];
1012+
{{{ receivedSymbol('wasmTable') }}}
10091013
#if ASSERTIONS && !PURE_WASI
10101014
assert(wasmTable, "table not found in wasm exports");
10111015
#endif
@@ -1019,11 +1023,11 @@ function createWasm() {
10191023
#endif
10201024

10211025
#if hasExportedSymbol('__wasm_call_ctors')
1022-
addOnInit(Module['asm']['__wasm_call_ctors']);
1026+
addOnInit(wasmExports['__wasm_call_ctors']);
10231027
#endif
10241028

10251029
#if hasExportedSymbol('__wasm_apply_data_relocs')
1026-
__RELOC_FUNCS__.push(Module['asm']['__wasm_apply_data_relocs']);
1030+
__RELOC_FUNCS__.push(wasmExports['__wasm_apply_data_relocs']);
10271031
#endif
10281032

10291033
#if ABORT_ON_WASM_EXCEPTIONS

src/runtime_debug.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,22 @@
66

77
#if ASSERTIONS
88

9-
function legacyModuleProp(prop, newName) {
9+
function legacyModuleProp(prop, newName, incomming=true) {
1010
if (!Object.getOwnPropertyDescriptor(Module, prop)) {
1111
Object.defineProperty(Module, prop, {
1212
configurable: true,
1313
get() {
14-
abort('Module.' + prop + ' has been replaced with plain ' + newName + ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)');
14+
let extra = incomming ? ' (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)' : '';
15+
abort(`\`Module.${prop}\` has been replaced by \`${newName}\`` + extra);
16+
1517
}
1618
});
1719
}
1820
}
1921

2022
function ignoredModuleProp(prop) {
2123
if (Object.getOwnPropertyDescriptor(Module, prop)) {
22-
abort('`Module.' + prop + '` was supplied but `' + prop + '` not included in INCOMING_MODULE_JS_API');
24+
abort(`\`Module.${prop}\` was supplied but \`${prop}\` not included in INCOMING_MODULE_JS_API`);
2325
}
2426
}
2527

src/shell.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,7 @@ assert(typeof Module['readAsync'] == 'undefined', 'Module.readAsync option was r
477477
assert(typeof Module['readBinary'] == 'undefined', 'Module.readBinary option was removed (modify readBinary in JS)');
478478
assert(typeof Module['setWindowTitle'] == 'undefined', 'Module.setWindowTitle option was removed (modify setWindowTitle in JS)');
479479
assert(typeof Module['TOTAL_MEMORY'] == 'undefined', 'Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY');
480+
{{{ makeRemovedModuleAPIAssert('asm', 'wasmExports', false) }}}
480481
{{{ makeRemovedModuleAPIAssert('read', 'read_') }}}
481482
{{{ makeRemovedModuleAPIAssert('readAsync') }}}
482483
{{{ makeRemovedModuleAPIAssert('readBinary') }}}

test/optimizer/applyDCEGraphRemovals-output.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ var expD5 = asm["expD5"];
1717

1818
var expD6;
1919

20-
var expI1 = Module["expI1"] = () => (expI1 = Module["expI1"] = Module["asm"]["expI1"])();
20+
var expI1 = Module["expI1"] = () => (expI1 = Module["expI1"] = wasmExports["expI1"])();
2121

22-
var expI2 = Module["expI2"] = () => (expI2 = Module["expI2"] = Module["asm"]["expI2"])();
22+
var expI2 = Module["expI2"] = () => (expI2 = Module["expI2"] = wasmExports["expI2"])();
2323

24-
var expI3 = Module["expI3"] = () => (expI3 = Module["expI3"] = Module["asm"]["expI3"])();
24+
var expI3 = Module["expI3"] = () => (expI3 = Module["expI3"] = wasmExports["expI3"])();
2525

2626
var expI4;
2727

28-
var expI5 = () => (expI5 = Module["asm"]["expI5"])();
28+
var expI5 = () => (expI5 = wasmExports["expI5"])();
2929

3030
var expI6;
3131

test/optimizer/applyDCEGraphRemovals.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ var expD5 = asm['expD5'];
1111
var expD6 = asm['expD6'];
1212

1313
// exports gotten indirectly (async compilation
14-
var expI1 = Module['expI1'] = () => (expI1 = Module['expI1'] = Module['asm']['expI1'])();
15-
var expI2 = Module['expI2'] = () => (expI2 = Module['expI2'] = Module['asm']['expI2'])();
16-
var expI3 = Module['expI3'] = () => (expI3 = Module['expI3'] = Module['asm']['expI3'])();
17-
var expI4 = Module['expI4'] = () => (expI4 = Module['expI4'] = Module['asm']['expI4'])();
14+
var expI1 = Module['expI1'] = () => (expI1 = Module['expI1'] = wasmExports['expI1'])();
15+
var expI2 = Module['expI2'] = () => (expI2 = Module['expI2'] = wasmExports['expI2'])();
16+
var expI3 = Module['expI3'] = () => (expI3 = Module['expI3'] = wasmExports['expI3'])();
17+
var expI4 = Module['expI4'] = () => (expI4 = Module['expI4'] = wasmExports['expI4'])();
1818

1919
// Like above, but not exported on the Module
20-
var expI5 = () => (expI5 = Module['asm']['expI5'])();
21-
var expI6 = () => (expI6 = Module['asm']['expI6'])();
20+
var expI5 = () => (expI5 = wasmExports['expI5'])();
21+
var expI6 = () => (expI6 = wasmExports['expI6'])();
2222

2323
// add uses for some of them, leave *4 as non-roots
2424
expD1;

test/optimizer/applyImportAndExportNameChanges-output.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ var wasmImports = {
1717
var expD1 = Module["expD1"] = asm["c"];
1818

1919
var expI1 = Module["expI1"] = function() {
20-
return Module["asm"]["d"].apply(null, arguments);
20+
return wasmExports["d"].apply(null, arguments);
2121
};

test/optimizer/applyImportAndExportNameChanges.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ var expD1 = Module['expD1'] = asm['expD1'];
1818

1919
// exports gotten indirectly (async compilation
2020
var expI1 = Module['expI1'] = (function() {
21-
return Module['asm']['expI1'].apply(null, arguments);
21+
return wasmExports['expI1'].apply(null, arguments);
2222
});
2323

2424
// EXTRA_INFO: { "mapping": {"save1" : "a", "number": "A", "expD1": "c", "expI1": "d", "__wasm_call_ctors": "e", "stackRestore": "h", "stackAlloc": "g", "__syscall140": "d", "main": "f", "__syscall146": "q", "__syscall54": "c", "__syscall6": "b" }}

test/optimizer/emitDCEGraph.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,13 @@ var expD4 = Module['expD4'] = asm['expD4'];
5353
var expD5 = asm['expD5'];
5454

5555
// exports gotten indirectly (async compilation
56-
var expI1 = Module['expI1'] = () => (expI1 = Module['expI1'] = Module['asm']['expI1'])();
57-
var expI2 = Module['expI2'] = () => (expI2 = Module['expI2'] = Module['asm']['expI2'])();
58-
var expI3 = Module['expI3'] = () => (expI3 = Module['expI3'] = Module['asm']['expI3'])();
59-
var expI4 = Module['expI4'] = () => (expI4 = Module['expI4'] = Module['asm']['expI4'])();
56+
var expI1 = Module['expI1'] = () => (expI1 = Module['expI1'] = wasmExports['expI1'])();
57+
var expI2 = Module['expI2'] = () => (expI2 = Module['expI2'] = wasmExports['expI2'])();
58+
var expI3 = Module['expI3'] = () => (expI3 = Module['expI3'] = wasmExports['expI3'])();
59+
var expI4 = Module['expI4'] = () => (expI4 = Module['expI4'] = wasmExports['expI4'])();
6060

6161
// Same as above but not export on the Module.
62-
var expI5 = () => (expI5 = Module['asm']['expI5'])();
62+
var expI5 = () => (expI5 = wasmExports['expI5'])();
6363

6464
// add uses for some of them
6565
expD1;
@@ -68,7 +68,7 @@ asm['expD3'];
6868

6969
expI1;
7070
Module['expI2'];
71-
Module['asm']['expI3'];
71+
wasmExports['expI3'];
7272

7373
// deep uses, that we can't scan
7474
function usedFromDeep() {
@@ -86,10 +86,10 @@ var func = function() {
8686
};
8787

8888
// dyncalls
89-
var dynCall_v = Module["dynCall_v"] = () => Module["asm"]["dynCall_v"]();
90-
var dynCall_vi = Module["dynCall_vi"] = () => Module["asm"]["dynCall_vi"]();
91-
var dynCall_vii = Module["dynCall_vii"] = () => Module["asm"]["dynCall_vii"]();
92-
var dynCall_viii = Module["dynCall_viii"] = () => Module["asm"]["dynCall_viii"]();
89+
var dynCall_v = Module["dynCall_v"] = () => wasmExports["dynCall_v"]();
90+
var dynCall_vi = Module["dynCall_vi"] = () => wasmExports["dynCall_vi"]();
91+
var dynCall_vii = Module["dynCall_vii"] = () => wasmExports["dynCall_vii"]();
92+
var dynCall_viii = Module["dynCall_viii"] = () => wasmExports["dynCall_viii"]();
9393

9494
dynCall_v(ptr); // use directly
9595
Module['dynCall_vi'](ptr, 1); // use on module

test/optimizer/emitDCEGraph2.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// dyncalls
2-
var dynCall_v = Module["dynCall_v"] = () => Module["asm"]["dynCall_v"]();
3-
var dynCall_vi = Module["dynCall_vi"] = () => Module["asm"]["dynCall_vi"]();
4-
var dynCall_vii = Module["dynCall_vii"] = () => Module["asm"]["dynCall_vii"]();
5-
var dynCall_viii = Module["dynCall_viii"] = () => Module["asm"]["dynCall_viii"]();
2+
var dynCall_v = Module["dynCall_v"] = () => wasmExports["dynCall_v"]();
3+
var dynCall_vi = Module["dynCall_vi"] = () => wasmExports["dynCall_vi"]();
4+
var dynCall_vii = Module["dynCall_vii"] = () => wasmExports["dynCall_vii"]();
5+
var dynCall_viii = Module["dynCall_viii"] = () => wasmExports["dynCall_viii"]();
66

77
// a dynamic dynCall
88
function dynCall(sig) {

test/optimizer/emitDCEGraph3.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// dyncalls
2-
var dynCall_v = Module["dynCall_v"] = () => Module["asm"]["dynCall_v"]();
3-
var dynCall_vi = Module["dynCall_vi"] = () => Module["asm"]["dynCall_vi"]();
4-
var dynCall_vii = Module["dynCall_vii"] = () => Module["asm"]["dynCall_vii"]();
5-
var dynCall_viii = Module["dynCall_viii"] = () => Module["asm"]["dynCall_viii"]();
2+
var dynCall_v = Module["dynCall_v"] = () => wasmExports["dynCall_v"]();
3+
var dynCall_vi = Module["dynCall_vi"] = () => wasmExports["dynCall_vi"]();
4+
var dynCall_vii = Module["dynCall_vii"] = () => wasmExports["dynCall_vii"]();
5+
var dynCall_viii = Module["dynCall_viii"] = () => wasmExports["dynCall_viii"]();
66

77
// a dynamic dynCall
88
function dynCall(sig) {

test/optimizer/emitDCEGraph4.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// dyncalls
2-
var dynCall_v = Module["dynCall_v"] = () => Module["asm"]["dynCall_v"]();
3-
var dynCall_vi = Module["dynCall_vi"] = () => Module["asm"]["dynCall_vi"]();
4-
var dynCall_vii = Module["dynCall_vii"] = () => Module["asm"]["dynCall_vii"]();
5-
var dynCall_viii = Module["dynCall_viii"] = () => Module["asm"]["dynCall_viii"]();
2+
var dynCall_v = Module["dynCall_v"] = () => wasmExports["dynCall_v"]();
3+
var dynCall_vi = Module["dynCall_vi"] = () => wasmExports["dynCall_vi"]();
4+
var dynCall_vii = Module["dynCall_vii"] = () => wasmExports["dynCall_vii"]();
5+
var dynCall_viii = Module["dynCall_viii"] = () => wasmExports["dynCall_viii"]();
66

77
// a dynamic dynCall
88
function dynCall(sig) {

test/optimizer/emitDCEGraph5.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// wasm backend notation has one fewer _ in the wasm
22
__GLOBAL__I_000101(); // var use
3-
var __GLOBAL__I_000101 = Module["__GLOBAL__I_000101"] = () => Module["asm"]["_GLOBAL__I_000101"]();
3+
var __GLOBAL__I_000101 = Module["__GLOBAL__I_000101"] = () => wasmExports["_GLOBAL__I_000101"]();
44

55
__ATINIT__.push({ func: function() { __GLOBAL__I_iostream() } }); // var use inside other scope
6-
var __GLOBAL__I_iostream = Module["__GLOBAL__I_iostream"] = () => Module["asm"]["_GLOBAL__I_iostream.cpp"]();
6+
var __GLOBAL__I_iostream = Module["__GLOBAL__I_iostream"] = () => wasmExports["_GLOBAL__I_iostream.cpp"]();
77

88
Module["__DUB"](); // module use
9-
var __DUB = Module["__DUB"] = () => Module["asm"]["_DUB"]();
9+
var __DUB = Module["__DUB"] = () => wasmExports["_DUB"]();
1010

11-
var __UNUSED = Module["__UNUSED"] = () => Module["asm"]["_UNUSED"]();
11+
var __UNUSED = Module["__UNUSED"] = () => wasmExports["_UNUSED"]();
1212

1313
var wasmImports = {
1414
};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
25162
1+
25131
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
25126
1+
25099
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
29381
1+
29309

0 commit comments

Comments
 (0)