From ba08f70f9c4bcfa4822f0531e2b5d9f6ac8470ab Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Fri, 3 Oct 2025 12:41:27 -0700 Subject: [PATCH] Flip some negated `#if` checks. NFC This helps with readability IMHO since you don't need to do a double negative when considering the `#else` block. --- src/jsifier.mjs | 18 +++++++------- src/lib/libcore.js | 6 ++--- src/lib/libemval.js | 54 ++++++++++++++++++++-------------------- src/lib/libsdl.js | 10 ++++---- src/postamble_minimal.js | 6 ++--- 5 files changed, 47 insertions(+), 47 deletions(-) diff --git a/src/jsifier.mjs b/src/jsifier.mjs index b30a4f8d71b5f..0f756027531cc 100644 --- a/src/jsifier.mjs +++ b/src/jsifier.mjs @@ -601,15 +601,7 @@ function(${args}) { warn('To build in STANDALONE_WASM mode without a main(), use emcc --no-entry'); } } - if (!RELOCATABLE) { - // emit a stub that will fail at runtime - LibraryManager.library[symbol] = new Function(`abort('missing function: ${symbol}');`); - // We have already warned/errored about this function, so for the purposes of Closure use, mute all type checks - // regarding this function, marking ot a variadic function that can take in anything and return anything. - // (not useful to warn/error multiple times) - LibraryManager.library[symbol + '__docs'] = '/** @type {function(...*):?} */'; - isStub = true; - } else { + if (RELOCATABLE) { // Create a stub for this symbol which can later be replaced by the // dynamic linker. If this stub is called before the symbol is // resolved assert in debug builds or trap in release builds. @@ -626,6 +618,14 @@ function(${args}) { const functionBody = assertion + `return ${target}(...args);`; LibraryManager.library[symbol] = new Function('...args', functionBody); isStub = true; + } else { + // emit a stub that will fail at runtime + LibraryManager.library[symbol] = new Function(`abort('missing function: ${symbol}');`); + // We have already warned/errored about this function, so for the purposes of Closure use, mute all type checks + // regarding this function, marking ot a variadic function that can take in anything and return anything. + // (not useful to warn/error multiple times) + LibraryManager.library[symbol + '__docs'] = '/** @type {function(...*):?} */'; + isStub = true; } } diff --git a/src/lib/libcore.js b/src/lib/libcore.js index 79f0d17f85480..9c2f828c43920 100644 --- a/src/lib/libcore.js +++ b/src/lib/libcore.js @@ -2556,10 +2556,10 @@ function wrapSyscallFunction(x, library, isWasi) { } var isVariadic = !isWasi && t.includes(', varargs'); -#if SYSCALLS_REQUIRE_FILESYSTEM == 0 - var canThrow = false; -#else +#if SYSCALLS_REQUIRE_FILESYSTEM var canThrow = library[x + '__nothrow'] !== true; +#else + var canThrow = false; #endif library[x + '__deps'] ??= []; diff --git a/src/lib/libemval.js b/src/lib/libemval.js index feee4c931717a..e9e8553cd49d4 100644 --- a/src/lib/libemval.js +++ b/src/lib/libemval.js @@ -279,33 +279,7 @@ var LibraryEmVal = { var argFromPtr = argTypes.map(type => type.readValueFromPointer.bind(type)); argCount--; // remove the extracted return type -#if !DYNAMIC_EXECUTION - var argN = new Array(argCount); - var invokerFunction = (handle, methodName, destructorsRef, args) => { - var offset = 0; - for (var i = 0; i < argCount; ++i) { - argN[i] = argFromPtr[i](args + offset); - offset += GenericWireTypeSize; - } - var rv; - switch (kind) { - case {{{ cDefs['internal::EM_INVOKER_KIND::FUNCTION'] }}}: - rv = Emval.toValue(handle).apply(null, argN); - break; - case {{{ cDefs['internal::EM_INVOKER_KIND::CONSTRUCTOR'] }}}: - rv = Reflect.construct(Emval.toValue(handle), argN); - break; - case {{{ cDefs['internal::EM_INVOKER_KIND::CAST'] }}}: - // no-op, just return the argument - rv = argN[0]; - break; - case {{{ cDefs['internal::EM_INVOKER_KIND::METHOD'] }}}: - rv = Emval.toValue(handle)[getStringOrSymbol(methodName)](...argN); - break; - } - return emval_returnValue(toReturnWire, destructorsRef, rv); - }; -#else +#if DYNAMIC_EXECUTION var captures = {'toValue': Emval.toValue}; var args = argFromPtr.map((argFromPtr, i) => { var captureName = `argFromPtr${i}`; @@ -339,6 +313,32 @@ ${functionBody} }`; var invokerFunction = new Function(Object.keys(captures), functionBody)(...Object.values(captures)); +#else + var argN = new Array(argCount); + var invokerFunction = (handle, methodName, destructorsRef, args) => { + var offset = 0; + for (var i = 0; i < argCount; ++i) { + argN[i] = argFromPtr[i](args + offset); + offset += GenericWireTypeSize; + } + var rv; + switch (kind) { + case {{{ cDefs['internal::EM_INVOKER_KIND::FUNCTION'] }}}: + rv = Emval.toValue(handle).apply(null, argN); + break; + case {{{ cDefs['internal::EM_INVOKER_KIND::CONSTRUCTOR'] }}}: + rv = Reflect.construct(Emval.toValue(handle), argN); + break; + case {{{ cDefs['internal::EM_INVOKER_KIND::CAST'] }}}: + // no-op, just return the argument + rv = argN[0]; + break; + case {{{ cDefs['internal::EM_INVOKER_KIND::METHOD'] }}}: + rv = Emval.toValue(handle)[getStringOrSymbol(methodName)](...argN); + break; + } + return emval_returnValue(toReturnWire, destructorsRef, rv); + }; #endif var functionName = `methodCaller<(${argTypes.map(t => t.name)}) => ${retType.name}>`; return emval_addMethodCaller(createNamedFunction(functionName, invokerFunction)); diff --git a/src/lib/libsdl.js b/src/lib/libsdl.js index 29463f21ed23e..8a52597bb6ef5 100644 --- a/src/lib/libsdl.js +++ b/src/lib/libsdl.js @@ -1743,17 +1743,17 @@ var LibrarySDL = { // We actually do the whole screen in Unlock... }, -#if !ASYNCIFY +#if ASYNCIFY + SDL_Delay__deps: ['emscripten_sleep'], + SDL_Delay__async: true, + SDL_Delay: (delay) => _emscripten_sleep(delay), +#else SDL_Delay: (delay) => { if (!ENVIRONMENT_IS_WORKER) abort('SDL_Delay called on the main thread! Potential infinite loop, quitting. (consider building with async support like ASYNCIFY)'); // horrible busy-wait, but in a worker it at least does not block rendering var now = Date.now(); while (Date.now() - now < delay) {} }, -#else - SDL_Delay__deps: ['emscripten_sleep'], - SDL_Delay__async: true, - SDL_Delay: (delay) => _emscripten_sleep(delay), #endif SDL_WM_SetCaption__proxy: 'sync', diff --git a/src/postamble_minimal.js b/src/postamble_minimal.js index 043d7cb38d709..4a09154626210 100644 --- a/src/postamble_minimal.js +++ b/src/postamble_minimal.js @@ -258,10 +258,10 @@ WebAssembly.instantiate(Module['wasm'], imports).then(/** @suppress {missingProp wasmExports = applySignatureConversions(wasmExports); #endif -#if !DECLARE_ASM_MODULE_EXPORTS - exportWasmSymbols(wasmExports); -#else +#if DECLARE_ASM_MODULE_EXPORTS assignWasmExports(wasmExports); +#else + exportWasmSymbols(wasmExports); #endif #if !IMPORTED_MEMORY