Skip to content

Commit 0a4cfff

Browse files
committed
Remove redundant __deps entries and autoAddDeps calls across JS libraries
Warn when an explicit `__deps` entry duplicates an auto-detected dependency, and remove all `autoAddDeps` calls and redundant `__deps` entries across `src/lib/*.js` and the test suite. Fixes: #19098
1 parent 55610cd commit 0a4cfff

111 files changed

Lines changed: 390 additions & 1840 deletions

File tree

Some content is hidden

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

‎src/jsifier.mjs‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,11 @@ function calculateDeps(snippet, deps, symbol, symbolsOnly = false) {
297297
}
298298

299299
for (const dep of found) {
300-
if (!deps.includes(dep)) {
300+
if (deps.includes(dep)) {
301+
if (!symbolsOnly && symbol && LibraryManager.library[symbol] !== dep) {
302+
warn(`${symbol}: redundant __deps entry: ${dep}`);
303+
}
304+
} else {
301305
if (!symbolsOnly && symbol) {
302306
debugLog(`auto-detected dependency: ${symbol} -> ${dep}`);
303307
}

‎src/lib/libaddfunction.js‎

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ addToLibrary({
3535
}`,
3636

3737
$generateTypePack__internal: true,
38-
$generateTypePack__deps: ['$uleb128EncodeWithLen', '$wasmTypeCodes'],
3938
$generateTypePack: (types) => uleb128EncodeWithLen(Array.from(types, (type) => {
4039
var code = wasmTypeCodes[type];
4140
#if ASSERTIONS
@@ -46,10 +45,6 @@ addToLibrary({
4645

4746
#if !WASM2JS || WASM == 2
4847
// Wraps a JS function as a wasm function with a given signature.
49-
$convertJsFunctionToWasm__deps: [
50-
'$uleb128EncodeWithLen',
51-
'$generateTypePack'
52-
],
5348
$convertJsFunctionToWasm: (func, sig) => {
5449
#if ASSERTIONS && !WASM_BIGINT
5550
assert(!sig.includes('j'), 'i64 not permitted in function signatures when WASM_BIGINT is disabled');
@@ -93,7 +88,6 @@ addToLibrary({
9388
// Weak map of functions in the table to their indexes, created on first use.
9489
$functionsInTableMap: undefined,
9590

96-
$getEmptyTableSlot__deps: ['$freeTableIndexes', '$wasmTable'],
9791
$getEmptyTableSlot: () => {
9892
// Reuse a free index if there is one, otherwise grow.
9993
if (freeTableIndexes.length) {
@@ -114,7 +108,6 @@ addToLibrary({
114108
#endif
115109
},
116110

117-
$updateTableMap__deps: ['$getWasmTableEntry'],
118111
$updateTableMap: (offset, count) => {
119112
if (functionsInTableMap) {
120113
for (var i = offset; i < offset + count; i++) {
@@ -127,7 +120,6 @@ addToLibrary({
127120
}
128121
},
129122

130-
$getFunctionAddress__deps: ['$updateTableMap', '$functionsInTableMap', '$wasmTable'],
131123
$getFunctionAddress: (func) => {
132124
// First, create the map if this is the first use.
133125
if (!functionsInTableMap) {
@@ -142,16 +134,6 @@ addToLibrary({
142134
* 'sig' parameter is required if the function being added is a JS function.
143135
*/
144136
$addFunction__docs: '/** @param {string=} sig */',
145-
$addFunction__deps: ['$getFunctionAddress',
146-
'$functionsInTableMap', '$getEmptyTableSlot',
147-
'$setWasmTableEntry',
148-
#if !WASM2JS || WASM == 2
149-
'$convertJsFunctionToWasm',
150-
#endif
151-
#if ASSERTIONS >= 2
152-
'$getWasmTableEntry', '$wasmTable',
153-
#endif
154-
],
155137

156138
$addFunction: (func, sig) => {
157139
#if ASSERTIONS
@@ -201,8 +183,6 @@ addToLibrary({
201183
return ret;
202184
},
203185

204-
$removeFunction__deps: ['$functionsInTableMap', '$freeTableIndexes',
205-
'$getWasmTableEntry', '$setWasmTableEntry'],
206186
$removeFunction: (index) => {
207187
functionsInTableMap.delete(getWasmTableEntry(index));
208188
setWasmTableEntry(index, null);

‎src/lib/libasync.js‎

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,7 @@ addToLibrary({
2121

2222
#if ASYNCIFY
2323
$Asyncify__force: true,
24-
$Asyncify__deps: ['$runAndAbortIfError', '$callUserCallback',
25-
#if ASSERTIONS
26-
'$createNamedFunction',
27-
#endif
24+
$Asyncify__deps: [
2825
#if !MINIMAL_RUNTIME
2926
'$runtimeKeepalivePush', '$runtimeKeepalivePop',
3027
#endif
@@ -483,7 +480,7 @@ addToLibrary({
483480
emscripten_sleep__async: 'auto',
484481
emscripten_sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
485482

486-
emscripten_wget_data__deps: ['$asyncLoad', 'malloc'],
483+
emscripten_wget_data__deps: ['malloc'],
487484
emscripten_wget_data__async: 'auto',
488485
emscripten_wget_data: async (url, pbuffer, pnum, perror) => {
489486
/* no need for run dependency, this is async but will not do any prepare etc. step */
@@ -500,7 +497,6 @@ addToLibrary({
500497
}
501498
},
502499

503-
emscripten_scan_registers__deps: ['$safeSetTimeout'],
504500
emscripten_scan_registers__async: true,
505501
emscripten_scan_registers: (func) => {
506502
return Asyncify.handleSleep((wakeUp) => {
@@ -517,7 +513,7 @@ addToLibrary({
517513
});
518514
},
519515

520-
$Fibers__deps: ['$Asyncify', 'emscripten_stack_set_limits', '$stackRestore'],
516+
$Fibers__deps: ['emscripten_stack_set_limits'],
521517
$Fibers: {
522518
nextFiber: 0,
523519
trampolineRunning: false,
@@ -577,7 +573,6 @@ addToLibrary({
577573
},
578574
},
579575

580-
emscripten_fiber_swap__deps: ['$Asyncify', '$Fibers', '$stackSave'],
581576
emscripten_fiber_swap__async: true,
582577
emscripten_fiber_swap: (oldFiber, newFiber) => {
583578
if (ABORT) return;

‎src/lib/libatomic.js‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ addToLibrary({
9494
$liveAtomicWaitAsyncCounter: 0,
9595
$liveAtomicWaitAsyncCounter__internal: true,
9696

97-
emscripten_atomic_wait_async__deps: ['$atomicWaitStates', '$liveAtomicWaitAsyncs', '$liveAtomicWaitAsyncCounter', '$polyfillWaitAsync', '$callUserCallback'],
97+
emscripten_atomic_wait_async__deps: ['$polyfillWaitAsync'],
9898
emscripten_atomic_wait_async: (addr, val, asyncWaitFinished, userData, maxWaitMilliseconds) => {
9999
let wait = Atomics.waitAsync(HEAP32, {{{ getHeapOffset('addr', 'i32') }}}, val, maxWaitMilliseconds);
100100
if (!wait.async) return atomicWaitStates.indexOf(wait.value);
@@ -116,7 +116,6 @@ addToLibrary({
116116
return -counter;
117117
},
118118

119-
emscripten_atomic_cancel_wait_async__deps: ['$liveAtomicWaitAsyncs'],
120119
emscripten_atomic_cancel_wait_async: (waitToken) => {
121120
#if ASSERTIONS
122121
if (waitToken == {{{ cDefs.ATOMICS_WAIT_NOT_EQUAL }}}) {
@@ -143,7 +142,6 @@ addToLibrary({
143142
return {{{ cDefs.EMSCRIPTEN_RESULT_INVALID_PARAM }}};
144143
},
145144

146-
emscripten_atomic_cancel_all_wait_asyncs__deps: ['$liveAtomicWaitAsyncs'],
147145
emscripten_atomic_cancel_all_wait_asyncs: () => {
148146
let waitAsyncs = Object.values(liveAtomicWaitAsyncs);
149147
for (var address of waitAsyncs) {
@@ -153,7 +151,6 @@ addToLibrary({
153151
return waitAsyncs.length;
154152
},
155153

156-
emscripten_atomic_cancel_all_wait_asyncs_at_address__deps: ['$liveAtomicWaitAsyncs'],
157154
emscripten_atomic_cancel_all_wait_asyncs_at_address: (address) => {
158155
let numCancelled = 0;
159156
for (var [waitToken, waitAddress] of Object.entries(liveAtomicWaitAsyncs)) {

‎src/lib/libautodebug.js‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ const LibraryAutodebug = {
1515
dbg('get_i32 ' + [loc, index, value]);
1616
return value;
1717
},
18-
$get_i64__deps: ['setTempRet0'],
1918
$get_i64: (loc, index, low, high) => {
2019
dbg('get_i64 ' + [loc, index, low, high]);
2120
_setTempRet0(high);
@@ -49,7 +48,6 @@ const LibraryAutodebug = {
4948
dbg('set_i32 ' + [loc, index, value]);
5049
return value;
5150
},
52-
$set_i64__deps: ['setTempRet0'],
5351
$set_i64: (loc, index, low, high) => {
5452
dbg('set_i64 ' + [loc, index, low, high]);
5553
_setTempRet0(high);
@@ -87,7 +85,6 @@ const LibraryAutodebug = {
8785
dbg('load_val_i32 ' + [loc, value]);
8886
return value;
8987
},
90-
$load_val_i64__deps: ['setTempRet0'],
9188
$load_val_i64: (loc, low, high) => {
9289
dbg('load_val_i64 ' + [loc, low, high]);
9390
_setTempRet0(high);
@@ -109,7 +106,6 @@ const LibraryAutodebug = {
109106
dbg('store_val_i32 ' + [loc, value]);
110107
return value;
111108
},
112-
$store_val_i64__deps: ['setTempRet0'],
113109
$store_val_i64: (loc, low, high) => {
114110
dbg('store_val_i64 ' + [loc, low, high]);
115111
_setTempRet0(high);

‎src/lib/libbrowser.js‎

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,10 @@
77
// Utilities for browser environments
88
var LibraryBrowser = {
99
$workerHandles__internal: true,
10-
$workerHandles__deps: ['$HandleAllocator'],
1110
$workerHandles: 'new HandleAllocator();',
1211

1312
$Browser__deps: [
14-
'$getFullscreenElement',
1513
#if FILESYSTEM
16-
'$preloadPlugins',
17-
'$safeSetTimeout',
1814
#if MAIN_MODULE
1915
'$preloadedWasm',
2016
#endif
@@ -510,7 +506,7 @@ var LibraryBrowser = {
510506
$setCanvasSize: 'Browser.setCanvasSize',
511507
$createContext: 'Browser.createContext',
512508

513-
emscripten_run_preload_plugins__deps: ['$PATH'],
509+
emscripten_run_preload_plugins__deps: ['$Browser'],
514510
emscripten_run_preload_plugins__proxy: 'sync',
515511
emscripten_run_preload_plugins: (file, onload, onerror) => {
516512
{{{ runtimeKeepalivePush() }}}
@@ -545,7 +541,6 @@ var LibraryBrowser = {
545541
$Browser_asyncPrepareDataCounter: 0,
546542

547543
emscripten_run_preload_plugins_data__proxy: 'sync',
548-
emscripten_run_preload_plugins_data__deps: ['$stringToNewUTF8', '$Browser_asyncPrepareDataCounter'],
549544
emscripten_run_preload_plugins_data: (data, size, suffix, arg, onload, onerror) => {
550545
{{{ runtimeKeepalivePush() }}}
551546

@@ -570,14 +565,12 @@ var LibraryBrowser = {
570565
},
571566

572567
// Callable from pthread, executes in pthread context.
573-
emscripten_async_run_script__deps: ['emscripten_run_script', '$safeSetTimeout'],
574568
emscripten_async_run_script: (script, millis) => {
575569
// TODO: cache these to avoid generating garbage
576570
safeSetTimeout(() => _emscripten_run_script(script), millis);
577571
},
578572

579573
// TODO: currently not callable from a pthread, but immediately calls onerror() if not on main thread.
580-
emscripten_async_load_script__deps: ['$UTF8ToString', '$runDependencies', '$resolveRunDependencies', '$callUserCallback'],
581574
emscripten_async_load_script: async (url, onload, onerror) => {
582575
url = UTF8ToString(url);
583576
#if PTHREADS
@@ -627,6 +620,7 @@ var LibraryBrowser = {
627620
document.body.appendChild(script);
628621
},
629622

623+
emscripten_get_window_title__deps: ['malloc'],
630624
emscripten_get_window_title__proxy: 'sync',
631625
emscripten_get_window_title: () => {
632626
const buflen = 256;
@@ -675,7 +669,7 @@ var LibraryBrowser = {
675669

676670
// To avoid creating worker parent->child chains, always proxies to execute on the main thread.
677671
emscripten_create_worker__proxy: 'sync',
678-
emscripten_create_worker__deps: ['$UTF8ToString', 'realloc', '$workerHandles'],
672+
emscripten_create_worker__deps: ['realloc'],
679673
emscripten_create_worker: (url) => {
680674
url = UTF8ToString(url);
681675
var worker = new Worker(url);
@@ -712,7 +706,7 @@ var LibraryBrowser = {
712706
return id;
713707
},
714708

715-
emscripten_destroy_worker__deps: ['free', '$workerHandles'],
709+
emscripten_destroy_worker__deps: ['free'],
716710
emscripten_destroy_worker__proxy: 'sync',
717711
emscripten_destroy_worker: (id) => {
718712
var info = workerHandles.get(id);
@@ -721,7 +715,6 @@ var LibraryBrowser = {
721715
workerHandles.free(id);
722716
},
723717

724-
emscripten_call_worker__deps: ['$workerHandles'],
725718
emscripten_call_worker__proxy: 'sync',
726719
emscripten_call_worker: (id, funcName, data, size, callback, arg) => {
727720
funcName = UTF8ToString(funcName);
@@ -785,20 +778,18 @@ var LibraryBrowser = {
785778
},
786779
#endif
787780

788-
emscripten_get_worker_queue_size__deps: ['$workerHandles'],
789781
emscripten_get_worker_queue_size__proxy: 'sync',
790782
emscripten_get_worker_queue_size: (id) => {
791783
if (!workerHandles.has(id)) return -1;
792784
var info = workerHandles.get(id);
793785
return info.awaited;
794786
},
795787

796-
emscripten_get_preloaded_image_data__deps: ['$getPreloadedImageData', '$UTF8ToString'],
797788
emscripten_get_preloaded_image_data__proxy: 'sync',
798789
emscripten_get_preloaded_image_data: (path, w, h) => getPreloadedImageData(UTF8ToString(path), w, h),
799790

800791
$getPreloadedImageData__internal: true,
801-
$getPreloadedImageData__deps: ['$PATH_FS', 'malloc'],
792+
$getPreloadedImageData__deps: ['malloc'],
802793
$getPreloadedImageData: (path, w, h) => {
803794
path = PATH_FS.resolve(path);
804795

@@ -817,7 +808,7 @@ var LibraryBrowser = {
817808
},
818809

819810
#if !WASMFS // WasmFS implements this in wasm
820-
emscripten_get_preloaded_image_data_from_FILE__deps: ['$getPreloadedImageData', 'fileno'],
811+
emscripten_get_preloaded_image_data_from_FILE__deps: ['fileno'],
821812
emscripten_get_preloaded_image_data_from_FILE__proxy: 'sync',
822813
emscripten_get_preloaded_image_data_from_FILE: (file, w, h) => {
823814
var fd = _fileno(file);
@@ -831,6 +822,4 @@ var LibraryBrowser = {
831822
#endif
832823
};
833824

834-
autoAddDeps(LibraryBrowser, '$Browser');
835-
836825
addToLibrary(LibraryBrowser);

‎src/lib/libc_preprocessor.js‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ addToLibrary({
3535
// Runs C preprocessor algorithm on the given string 'code'.
3636
// Supported preprocessor directives: #if, #ifdef, #ifndef, #else, #elif, #endif, #define and #undef.
3737
// predefs: Specifies a dictionary of { 'key1': function(arg0, arg1) {...}, 'key2': ... } of predefined preprocessing variables
38-
$preprocess_c_code__deps: ['$find_closing_parens_index'],
3938
$preprocess_c_code: function(code, defs = {}) {
4039
var i = 0, // iterator over the input string
4140
len = code.length, // cache input length

‎src/lib/libccall.js‎

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ addToLibrary({
1919
},
2020

2121
// C calling interface.
22-
$ccall__deps: ['$getCFunc', '$writeArrayToMemory', '$stringToUTF8OnStack', '$stackSave', '$stackRestore', '$stackAlloc'],
2322
$ccall__docs: `
2423
/**
2524
* @param {string|null=} returnType
@@ -136,11 +135,6 @@ addToLibrary({
136135
* @param {Array=} argTypes
137136
* @param {Object=} opts
138137
*/`,
139-
$cwrap__deps: [ '$ccall',
140-
#if !ASSERTIONS
141-
'$getCFunc',
142-
#endif
143-
],
144138
$cwrap: (ident, returnType, argTypes, opts) => {
145139
#if !ASSERTIONS
146140
// When the function takes numbers and returns a number, we can just return

0 commit comments

Comments
 (0)