Skip to content

Commit

Permalink
Avoiding exporting ready promise. NFC
Browse files Browse the repository at this point in the history
This promise is defined and used only in MODULARIZE mode and the
promise itself is returned, so there is no need to export it on the
Module object.
  • Loading branch information
sbc100 committed Dec 20, 2023
1 parent 8027de3 commit 0f1f1f6
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 14 deletions.
6 changes: 3 additions & 3 deletions src/parseTools.js
Original file line number Diff line number Diff line change
Expand Up @@ -935,7 +935,7 @@ function to64(x) {

// Add assertions to catch common errors when using the Promise object we
// create on Module.ready() and return from MODULARIZE Module() invocations.
function addReadyPromiseAssertions(promise) {
function addReadyPromiseAssertions() {
// Warn on someone doing
//
// var instance = Module();
Expand All @@ -948,8 +948,8 @@ function addReadyPromiseAssertions(promise) {
const warningEnding = ' on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js';
const res = JSON.stringify(properties);
return res + `.forEach((prop) => {
if (!Object.getOwnPropertyDescriptor(${promise}, prop)) {
Object.defineProperty(${promise}, prop, {
if (!Object.getOwnPropertyDescriptor(readyPromise, prop)) {
Object.defineProperty(readyPromise, prop, {
get: () => abort('You are getting ' + prop + '${warningEnding}'),
set: () => abort('You are setting ' + prop + '${warningEnding}'),
});
Expand Down
4 changes: 2 additions & 2 deletions src/shell.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,12 @@ var Module = typeof {{{ EXPORT_NAME }}} != 'undefined' ? {{{ EXPORT_NAME }}} : {
#if MODULARIZE
// Set up the promise that indicates the Module is initialized
var readyPromiseResolve, readyPromiseReject;
Module['ready'] = new Promise((resolve, reject) => {
var readyPromise = new Promise((resolve, reject) => {
readyPromiseResolve = resolve;
readyPromiseReject = reject;
});
#if ASSERTIONS
{{{ addReadyPromiseAssertions("Module['ready']") }}}
{{{ addReadyPromiseAssertions() }}}
#endif
#endif

Expand Down
4 changes: 2 additions & 2 deletions src/shell_minimal.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ var Module = {{{ EXPORT_NAME }}};
#if MODULARIZE && EXPORT_READY_PROMISE
// Set up the promise that indicates the Module is initialized
var readyPromiseResolve, readyPromiseReject;
Module['ready'] = new Promise((resolve, reject) => {
var readyPromise = new Promise((resolve, reject) => {
readyPromiseResolve = resolve;
readyPromiseReject = reject;
});
#if ASSERTIONS
{{{ addReadyPromiseAssertions("Module['ready']") }}}
{{{ addReadyPromiseAssertions() }}}
#endif
#endif

Expand Down
12 changes: 5 additions & 7 deletions tools/link.py
Original file line number Diff line number Diff line change
Expand Up @@ -2312,14 +2312,12 @@ def modularize():
shared.target_environment_may_be('web'):
async_emit = 'async '

# Return the incoming `moduleArg`. This is is equeivielt to the `Module` var within the
# generated code but its not run through closure minifiection so we can reference it in
# the the return statement.
return_value = 'moduleArg'
if settings.WASM_ASYNC_COMPILATION:
return_value += '.ready'
if not settings.EXPORT_READY_PROMISE:
return_value = '{}'
return_value = 'readyPromise'
if not settings.EXPORT_READY_PROMISE:
return_value = '{}'
else:
return_value = 'Module'

# TODO: Remove when https://bugs.webkit.org/show_bug.cgi?id=223533 is resolved.
if async_emit != '' and settings.EXPORT_NAME == 'config':
Expand Down

0 comments on commit 0f1f1f6

Please sign in to comment.