Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/lib/libeventloop.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,19 +65,24 @@ LibraryJSEventLoop = {
var __setImmediate_cb = (e) => {
if (e.data === __setImmediate_message_id) {
e.stopPropagation();
__setImmediate_queue.shift()();
__setImmediate_queue.shift()?.();
++__setImmediate_id_counter;
}
}
addEventListener("message", __setImmediate_cb, true);
emSetImmediate = (func) => {
#if PTHREADS
if (ENVIRONMENT_IS_WORKER) {
postMessage(__setImmediate_message_id);
} else
#endif
postMessage(__setImmediate_message_id, "*");
return __setImmediate_id_counter + __setImmediate_queue.push(func) - 1;
}
emClearImmediate = /**@type{function(number=)}*/((id) => {
var index = id - __setImmediate_id_counter;
// must preserve the order and count of elements in the queue, so replace the pending callback with an empty function
if (index >= 0 && index < __setImmediate_queue.length) __setImmediate_queue[index] = () => {};
if (index >= 0 && index < __setImmediate_queue.length) __setImmediate_queue[index] = null;
})
}`,
$emSetImmediate: undefined,
Expand Down
2 changes: 1 addition & 1 deletion src/lib/libpthread.js
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ var LibraryPThread = {
return;
}

if (d === 'setimmediate') {
if (d === 'setimmediate' || d === '_si') {
// Worker wants to postMessage() to itself to implement setImmediate()
// emulation.
worker.postMessage(d);
Expand Down
8 changes: 4 additions & 4 deletions test/codesize/test_codesize_minimal_pthreads.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"a.out.js": 7143,
"a.out.js.gz": 3542,
"a.out.js": 7154,
"a.out.js.gz": 3549,
"a.out.nodebug.wasm": 19037,
"a.out.nodebug.wasm.gz": 8787,
"total": 26180,
"total_gz": 12329,
"total": 26191,
"total_gz": 12336,
"sent": [
"a (memory)",
"b (exit)",
Expand Down
8 changes: 4 additions & 4 deletions test/codesize/test_codesize_minimal_pthreads_memgrowth.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
{
"a.out.js": 7551,
"a.out.js.gz": 3745,
"a.out.js": 7562,
"a.out.js.gz": 3752,
"a.out.nodebug.wasm": 19038,
"a.out.nodebug.wasm.gz": 8788,
"total": 26589,
"total_gz": 12533,
"total": 26600,
"total_gz": 12540,
"sent": [
"a (memory)",
"b (exit)",
Expand Down
8 changes: 6 additions & 2 deletions test/test_browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -4875,8 +4875,12 @@ def test_emscripten_set_timeout(self):
def test_emscripten_set_timeout_loop(self):
self.btest_exit('emscripten_set_timeout_loop.c', cflags=['-pthread', '-sPROXY_TO_PTHREAD'])

def test_emscripten_set_immediate(self):
self.btest_exit('emscripten_set_immediate.c')
@parameterized({
'': ([],),
'pthread': (['-pthread', '-sPROXY_TO_PTHREAD'],),
})
def test_emscripten_set_immediate(self, args):
self.btest_exit('emscripten_set_immediate.c', cflags=args)

def test_emscripten_set_immediate_loop(self):
self.btest_exit('emscripten_set_immediate_loop.c')
Expand Down
Loading