From c058d821f84287dd8812b6cac3edf6cd6f1bc364 Mon Sep 17 00:00:00 2001 From: kosaki Date: Thu, 29 Nov 2012 02:50:11 +0000 Subject: Revert r37956: thread.c (thread_start_func_2): small cleanups. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- thread.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'thread.c') diff --git a/thread.c b/thread.c index dae4194599..6d4e060c5d 100644 --- a/thread.c +++ b/thread.c @@ -507,7 +507,6 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s } th->value = Qnil; } - TH_POP_TAG(); th->status = THREAD_KILLED; thread_debug("thread end: %p\n", (void *)th); @@ -517,6 +516,13 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s /* treat with normal error object */ rb_threadptr_raise(main_th, 1, &errinfo); } + TH_POP_TAG(); + + /* locking_mutex must be Qfalse */ + if (th->locking_mutex != Qfalse) { + rb_bug("thread_start_func_2: locking_mutex must not be set (%p:%"PRIxVALUE")", + (void *)th, th->locking_mutex); + } /* delete self other than main thread from living_threads */ st_delete_wrap(th->vm->living_threads, th->self); @@ -525,14 +531,6 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s rb_threadptr_interrupt(main_th); } - /* locking_mutex must be Qfalse */ - if (th->locking_mutex != Qfalse) { - rb_bug("thread_start_func_2: locking_mutex must not be set (%p:%"PRIxVALUE")", - (void *)th, th->locking_mutex); - } - rb_threadptr_unlock_all_locking_mutexes(th); - rb_check_deadlock(th->vm); - /* wake up joining threads */ join_list = th->join_list; while (join_list) { @@ -545,6 +543,9 @@ thread_start_func_2(rb_thread_t *th, VALUE *stack_start, VALUE *register_stack_s join_list = join_list->next; } + rb_threadptr_unlock_all_locking_mutexes(th); + rb_check_deadlock(th->vm); + if (!th->root_fiber) { rb_thread_recycle_stack_release(th->stack); th->stack = 0; -- cgit v1.2.3