< prev index next >

test/hotspot/gtest/threadHelper.inline.hpp

Print this page

        

*** 57,68 **** Threads::add(this); } VM_StopSafepoint ss(&_ready, &_unblock); VMThread::execute(&ss); Threads::remove(this); - this->smr_delete(); } void doit() { if (os::create_thread(this, os::os_thread)) { os::start_thread(this); } else { ASSERT_TRUE(false); --- 57,70 ---- Threads::add(this); } VM_StopSafepoint ss(&_ready, &_unblock); VMThread::execute(&ss); Threads::remove(this); } + + // JavaThread::post_run() will delete 'this' safely + void doit() { if (os::create_thread(this, os::os_thread)) { os::start_thread(this); } else { ASSERT_TRUE(false);
*** 83,93 **** JavaTestThread(Semaphore* post) : _post(post) { } virtual ~JavaTestThread() {} ! void prerun() { this->set_thread_state(_thread_in_vm); { MutexLocker ml(Threads_lock); Threads::add(this); } --- 85,95 ---- JavaTestThread(Semaphore* post) : _post(post) { } virtual ~JavaTestThread() {} ! void pre_run() { this->set_thread_state(_thread_in_vm); { MutexLocker ml(Threads_lock); Threads::add(this); }
*** 97,115 **** } virtual void main_run() = 0; void run() { - prerun(); main_run(); - postrun(); } ! void postrun() { Threads::remove(this); _post->signal(); ! this->smr_delete(); } void doit() { if (os::create_thread(this, os::os_thread)) { os::start_thread(this); --- 99,115 ---- } virtual void main_run() = 0; void run() { main_run(); } ! void post_run() { Threads::remove(this); _post->signal(); ! JavaThread::post_run(); // deletes 'this' safely } void doit() { if (os::create_thread(this, os::os_thread)) { os::start_thread(this);
< prev index next >