Avoid additional EXPORT_NAME variable inside the module scope. NFC Within the module scope we still refer to the moduel as `Module`. The EXPORT_NAME comes in when we define the name of the factory function which creates the module.
diff --git a/emcc.py b/emcc.py index c69c5cf..29c2495 100755 --- a/emcc.py +++ b/emcc.py
@@ -3763,7 +3763,7 @@ shared.target_environment_may_be('web'): async_emit = 'async ' - return_value = settings.EXPORT_NAME + return_value = 'Module' if settings.WASM_ASYNC_COMPILATION: return_value += '.ready' if not settings.EXPORT_READY_PROMISE: @@ -3775,7 +3775,7 @@ src = ''' %(maybe_async)sfunction(config) { - var %(EXPORT_NAME)s = config || {}; + var Module = config || {}; %(src)s @@ -3783,7 +3783,6 @@ } ''' % { 'maybe_async': async_emit, - 'EXPORT_NAME': settings.EXPORT_NAME, 'src': src, 'return_value': return_value }
diff --git a/src/shell.js b/src/shell.js index 887e3e3..56bde5e 100644 --- a/src/shell.js +++ b/src/shell.js
@@ -34,8 +34,8 @@ }} */ Module; if (!Module) /** @suppress{checkTypes}*/Module = {"__EMSCRIPTEN_PRIVATE_MODULE_EXPORT_NAME_SUBSTITUTION__":1}; -#else -var Module = typeof {{{ EXPORT_NAME }}} != 'undefined' ? {{{ EXPORT_NAME }}} : {}; +#elif !MODULARIZE +var Module = Module || {}; #endif // USE_CLOSURE_COMPILER #if POLYFILL
diff --git a/src/shell_minimal.js b/src/shell_minimal.js index c1e9b92..5fdf488 100644 --- a/src/shell_minimal.js +++ b/src/shell_minimal.js
@@ -9,12 +9,10 @@ // otherwise replace every `Module` occurrence with the object below var /** @type{Object} */ Module; if (!Module) /** @suppress{checkTypes}*/Module = {"__EMSCRIPTEN_PRIVATE_MODULE_EXPORT_NAME_SUBSTITUTION__":1}; -#elif ENVIRONMENT_MAY_BE_NODE || ENVIRONMENT_MAY_BE_SHELL +#elif !MODULARIZE && (ENVIRONMENT_MAY_BE_NODE || ENVIRONMENT_MAY_BE_SHELL) // When running on the web we expect Module to be defined externally, in the // HTML. Otherwise we must define it here before its first use -var Module = typeof {{{ EXPORT_NAME }}} != 'undefined' ? {{{ EXPORT_NAME }}} : {}; -#else -var Module = {{{ EXPORT_NAME }}}; +var Module = Module || {}; #endif // USE_CLOSURE_COMPILER #if MODULARIZE && EXPORT_READY_PROMISE
diff --git a/test/common.py b/test/common.py index 1dda74f..c028d83 100644 --- a/test/common.py +++ b/test/common.py
@@ -836,7 +836,7 @@ if len(line) > 2048: # Sanity check that this is really the emscripten program/module on # a single line. - assert line.startswith('var Module=typeof Module!="undefined"') + assert line.startswith('var Module=Module||{}') long_lines.append(line) line = '<REPLACED ENTIRE PROGRAM ON SINGLE LINE>' return line
diff --git a/test/other/test_unoptimized_code_size.js.size b/test/other/test_unoptimized_code_size.js.size index 8948c5d..020276d 100644 --- a/test/other/test_unoptimized_code_size.js.size +++ b/test/other/test_unoptimized_code_size.js.size
@@ -1 +1 @@ -67126 +67096
diff --git a/test/other/test_unoptimized_code_size_no_asserts.js.size b/test/other/test_unoptimized_code_size_no_asserts.js.size index c5baeb6..c6defb5 100644 --- a/test/other/test_unoptimized_code_size_no_asserts.js.size +++ b/test/other/test_unoptimized_code_size_no_asserts.js.size
@@ -1 +1 @@ -38780 +38750
diff --git a/test/other/test_unoptimized_code_size_strict.js.size b/test/other/test_unoptimized_code_size_strict.js.size index fc429de..3751d9c 100644 --- a/test/other/test_unoptimized_code_size_strict.js.size +++ b/test/other/test_unoptimized_code_size_strict.js.size
@@ -1 +1 @@ -65992 +65962