diff --git a/src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c b/src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c index cc3908f1b02..292326c1dd5 100644 --- a/src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c +++ b/src/jdk.jdwp.agent/share/native/libjdwp/threadControl.c @@ -319,6 +319,7 @@ removeNode(ThreadList *list, ThreadNode *node) ThreadNode *prev; ThreadNode *next; + JDI_ASSERT(list == node->list); prev = node->prev; next = node->next; if ( prev != NULL ) { @@ -487,15 +488,11 @@ clearThread(JNIEnv *env, ThreadNode *node) } static void -removeThread(JNIEnv *env, ThreadList *list, jthread thread) +removeThread(JNIEnv *env, ThreadNode *node) { - ThreadNode *node; - - node = findThread(list, thread); - if (node != NULL) { - removeNode(list, node); - clearThread(env, node); - } + JDI_ASSERT(node != NULL); + removeNode(node->list, node); + clearThread(env, node); } static void @@ -507,7 +504,7 @@ removeResumed(JNIEnv *env, ThreadList *list) while (node != NULL) { ThreadNode *temp = node->next; if (node->suspendCount == 0) { - removeThread(env, list, node->thread); + removeThread(env, node); } node = temp; } @@ -2476,11 +2473,7 @@ threadControl_onEventHandlerExit(EventIndex ei, jthread thread, env = getEnv(); if (ei == EI_THREAD_END) { jboolean inResume = (node->resumeFrameDepth > 0); - if (isVThread(thread)) { - removeThread(env, &runningVThreads, thread); - } else { - removeThread(env, &runningThreads, thread); - } + removeThread(env, node); node = NULL; /* has been freed */ /* @@ -2930,7 +2923,7 @@ dumpThread(ThreadNode *node) { #ifdef DEBUG_THREADNAME tty_message("\tname: %s", node->name); #endif - // More fields can be printed here when needed. The amount of output is intentionlly + // More fields can be printed here when needed. The amount of output is intentionally // kept small so it doesn't generate too much output. tty_message("\tsuspendCount: %d", node->suspendCount); }