Skip to content

Commit cc359e6

Browse files
authored
Move BUILD_AS_WORKER code into its own file. NFC (#25713)
1 parent d0a5678 commit cc359e6

File tree

4 files changed

+54
-57
lines changed

4 files changed

+54
-57
lines changed

eslint.config.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export default [{
2828
'src/polyfill/',
2929
'src/lib/',
3030
'src/binaryDecode.js',
31+
'src/build_as_worker.js',
3132
'src/minimum_runtime_check.js',
3233
'src/runtime_*.js',
3334
'src/shell*.js',

src/build_as_worker.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
var workerResponded = false, workerCallbackId = -1;
2+
3+
(() => {
4+
var messageBuffer = null, buffer = 0;
5+
6+
function flushMessages() {
7+
if (!messageBuffer) return;
8+
if (runtimeInitialized) {
9+
var temp = messageBuffer;
10+
messageBuffer = null;
11+
temp.forEach((message) => onmessage(message));
12+
}
13+
}
14+
15+
function messageResender() {
16+
flushMessages();
17+
if (messageBuffer) {
18+
setTimeout(messageResender, 100); // still more to do
19+
}
20+
}
21+
22+
onmessage = (msg) => {
23+
// if main has not yet been called (mem init file, other async things), buffer messages
24+
if (!runtimeInitialized) {
25+
if (!messageBuffer) {
26+
messageBuffer = [];
27+
setTimeout(messageResender, 100);
28+
}
29+
messageBuffer.push(msg);
30+
return;
31+
}
32+
flushMessages();
33+
34+
var func = Module['_' + msg.data['funcName']];
35+
if (!func) abort('invalid worker function to call: ' + msg.data['funcName']);
36+
var data = msg.data['data'];
37+
if (data) {
38+
if (!data.byteLength) data = new Uint8Array(data);
39+
buffer = _realloc(buffer, data.length);
40+
HEAPU8.set(data, buffer);
41+
}
42+
43+
workerResponded = false;
44+
workerCallbackId = msg.data['callbackId'];
45+
if (data) {
46+
func(buffer, data.length);
47+
} else {
48+
func(0, 0);
49+
}
50+
}
51+
})();

src/postamble.js

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -373,59 +373,3 @@ run();
373373
#endif
374374

375375
#endif // MODULARIZE != instance
376-
377-
#if BUILD_AS_WORKER
378-
379-
var workerResponded = false, workerCallbackId = -1;
380-
381-
(() => {
382-
var messageBuffer = null, buffer = 0;
383-
384-
function flushMessages() {
385-
if (!messageBuffer) return;
386-
if (runtimeInitialized) {
387-
var temp = messageBuffer;
388-
messageBuffer = null;
389-
temp.forEach((message) => onmessage(message));
390-
}
391-
}
392-
393-
function messageResender() {
394-
flushMessages();
395-
if (messageBuffer) {
396-
setTimeout(messageResender, 100); // still more to do
397-
}
398-
}
399-
400-
onmessage = (msg) => {
401-
// if main has not yet been called (mem init file, other async things), buffer messages
402-
if (!runtimeInitialized) {
403-
if (!messageBuffer) {
404-
messageBuffer = [];
405-
setTimeout(messageResender, 100);
406-
}
407-
messageBuffer.push(msg);
408-
return;
409-
}
410-
flushMessages();
411-
412-
var func = Module['_' + msg.data['funcName']];
413-
if (!func) abort('invalid worker function to call: ' + msg.data['funcName']);
414-
var data = msg.data['data'];
415-
if (data) {
416-
if (!data.byteLength) data = new Uint8Array(data);
417-
buffer = _realloc(buffer, data.length);
418-
HEAPU8.set(data, buffer);
419-
}
420-
421-
workerResponded = false;
422-
workerCallbackId = msg.data['callbackId'];
423-
if (data) {
424-
func(buffer, data.length);
425-
} else {
426-
func(0, 0);
427-
}
428-
}
429-
})();
430-
431-
#endif

tools/link.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1715,9 +1715,10 @@ def limit_incoming_module_api():
17151715
# need to be able to call these explicitly.
17161716
settings.REQUIRED_EXPORTS += ['__funcs_on_exit']
17171717

1718-
# The worker code in src/postamble.js depends on realloc
17191718
if settings.BUILD_AS_WORKER:
1719+
# The worker code in src/build_as_worker.js depends on realloc
17201720
settings.REQUIRED_EXPORTS += ['realloc']
1721+
options.post_js.append(utils.path_from_root('src/build_as_worker.js'))
17211722

17221723
if not settings.DISABLE_EXCEPTION_CATCHING:
17231724
settings.REQUIRED_EXPORTS += [

0 commit comments

Comments
 (0)