Skip to content

Commit 5cc9b6b

Browse files
committed
Use __proxy mechanism for kill/cancelThread. NFC
This was noticed while working on #18376
1 parent b020474 commit 5cc9b6b

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

src/library_pthread.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
var LibraryPThread = {
2727
$PThread__postset: 'PThread.init();',
2828
$PThread__deps: ['_emscripten_thread_init',
29-
'$killThread',
30-
'$cancelThread', '$cleanupThread', '$zeroMemory',
29+
'$zeroMemory',
30+
'$cleanupThread',
3131
#if MAIN_MODULE
3232
'$markAsFinshed',
3333
#endif
@@ -280,10 +280,6 @@ var LibraryPThread = {
280280
} else if (cmd === 'markAsFinshed') {
281281
markAsFinshed(d['thread']);
282282
#endif
283-
} else if (cmd === 'killThread') {
284-
killThread(d['thread']);
285-
} else if (cmd === 'cancelThread') {
286-
cancelThread(d['thread']);
287283
} else if (cmd === 'loaded') {
288284
worker.loaded = true;
289285
#if ENVIRONMENT_MAY_BE_NODE && PTHREAD_POOL_SIZE
@@ -562,6 +558,9 @@ var LibraryPThread = {
562558
// entry point, calls pthread_exit, or acts upon a cancellation.
563559
// Detached threads are responsible for calling this themselves,
564560
// otherwise pthread_join is responsible for calling this.
561+
// Note: we can't use the 'async' proxy mechanism here since this can be
562+
// called from _emscripten_thread_exit after the current thread is been
563+
// destroyed (i.e. we can't call back into native code at this point).
565564
#if PTHREADS_DEBUG
566565
dbg('__emscripten_thread_cleanup: ' + ptrToString(thread))
567566
#endif
@@ -924,13 +923,13 @@ var LibraryPThread = {
924923
#endif
925924
},
926925

926+
__pthread_kill_js__deps: ['$cancelThread', '$killThread'],
927+
__pthread_kill_js__proxy: 'async',
927928
__pthread_kill_js: function(thread, signal) {
928929
if (signal === {{{ cDefs.SIGCANCEL }}}) { // Used by pthread_cancel in musl
929-
if (!ENVIRONMENT_IS_PTHREAD) cancelThread(thread);
930-
else postMessage({ 'cmd': 'cancelThread', 'thread': thread });
930+
cancelThread(thread);
931931
} else {
932-
if (!ENVIRONMENT_IS_PTHREAD) killThread(thread);
933-
else postMessage({ 'cmd': 'killThread', 'thread': thread });
932+
killThread(thread);
934933
}
935934
return 0;
936935
},

0 commit comments

Comments
 (0)