Hoist code on marking thread as exited

This patch hoists code on marking thread as exited, so more code is shared
for two different paths (thread_info is deleted or is not deleted).

gdb:

2017-04-10  Yao Qi  <yao.qi@linaro.org>

	* thread.c (delete_thread_1): Hoist code on marking thread as
	exited.
This commit is contained in:
Yao Qi 2017-04-10 14:39:41 +01:00
parent 947fa91414
commit 8c25b49760
2 changed files with 17 additions and 21 deletions

View File

@ -1,3 +1,8 @@
2017-04-10 Yao Qi <yao.qi@linaro.org>
* thread.c (delete_thread_1): Hoist code on marking thread as
exited.
2017-04-09 Simon Marchi <simon.marchi@polymtl.ca>
* windows-nat.c (windows_detach): Initialize ptid with

View File

@ -434,35 +434,26 @@ delete_thread_1 (ptid_t ptid, int silent)
if (tp->step_over_next != NULL)
thread_step_over_chain_remove (tp);
if (tp->state != THREAD_EXITED)
{
observer_notify_thread_exit (tp, silent);
/* Tag it as exited. */
tp->state = THREAD_EXITED;
/* Clear breakpoints, etc. associated with this thread. */
clear_thread_inferior_resources (tp);
}
/* If this is the current thread, or there's code out there that
relies on it existing (refcount > 0) we can't delete yet. Mark
it as exited, and notify it. */
relies on it existing (refcount > 0) we can't delete yet. */
if (tp->refcount > 0
|| ptid_equal (tp->ptid, inferior_ptid))
{
if (tp->state != THREAD_EXITED)
{
observer_notify_thread_exit (tp, silent);
/* Tag it as exited. */
tp->state = THREAD_EXITED;
/* Clear breakpoints, etc. associated with this thread. */
clear_thread_inferior_resources (tp);
}
/* Will be really deleted some other time. */
return;
}
/* Notify thread exit, but only if we haven't already. */
if (tp->state != THREAD_EXITED)
observer_notify_thread_exit (tp, silent);
/* Tag it as exited. */
tp->state = THREAD_EXITED;
clear_thread_inferior_resources (tp);
if (tpprev)
tpprev->next = tp->next;
else