comparison src/share/vm/runtime/thread.cpp @ 1871:75b0735b4d04

Merge
author acorn
date Wed, 13 Oct 2010 11:46:46 -0400
parents dfb38ea7da17 0715f0cf171d
children fa83ab460c54 cd4e20dc9917
comparison
equal deleted inserted replaced
1870:c77b5c592eab 1871:75b0735b4d04
1181 set_vm_result_2(NULL); 1181 set_vm_result_2(NULL);
1182 set_vframe_array_head(NULL); 1182 set_vframe_array_head(NULL);
1183 set_vframe_array_last(NULL); 1183 set_vframe_array_last(NULL);
1184 set_deferred_locals(NULL); 1184 set_deferred_locals(NULL);
1185 set_deopt_mark(NULL); 1185 set_deopt_mark(NULL);
1186 set_deopt_nmethod(NULL);
1186 clear_must_deopt_id(); 1187 clear_must_deopt_id();
1187 set_monitor_chunks(NULL); 1188 set_monitor_chunks(NULL);
1188 set_next(NULL); 1189 set_next(NULL);
1189 set_thread_state(_thread_new); 1190 set_thread_state(_thread_new);
1190 _terminated = _not_terminated; 1191 _terminated = _not_terminated;
1642 // Flush G1-related queues. 1643 // Flush G1-related queues.
1643 void JavaThread::flush_barrier_queues() { 1644 void JavaThread::flush_barrier_queues() {
1644 satb_mark_queue().flush(); 1645 satb_mark_queue().flush();
1645 dirty_card_queue().flush(); 1646 dirty_card_queue().flush();
1646 } 1647 }
1647 #endif 1648
1649 void JavaThread::initialize_queues() {
1650 assert(!SafepointSynchronize::is_at_safepoint(),
1651 "we should not be at a safepoint");
1652
1653 ObjPtrQueue& satb_queue = satb_mark_queue();
1654 SATBMarkQueueSet& satb_queue_set = satb_mark_queue_set();
1655 // The SATB queue should have been constructed with its active
1656 // field set to false.
1657 assert(!satb_queue.is_active(), "SATB queue should not be active");
1658 assert(satb_queue.is_empty(), "SATB queue should be empty");
1659 // If we are creating the thread during a marking cycle, we should
1660 // set the active field of the SATB queue to true.
1661 if (satb_queue_set.is_active()) {
1662 satb_queue.set_active(true);
1663 }
1664
1665 DirtyCardQueue& dirty_queue = dirty_card_queue();
1666 // The dirty card queue should have been constructed with its
1667 // active field set to true.
1668 assert(dirty_queue.is_active(), "dirty card queue should be active");
1669 }
1670 #endif // !SERIALGC
1648 1671
1649 void JavaThread::cleanup_failed_attach_current_thread() { 1672 void JavaThread::cleanup_failed_attach_current_thread() {
1650 if (get_thread_profiler() != NULL) { 1673 if (get_thread_profiler() != NULL) {
1651 get_thread_profiler()->disengage(); 1674 get_thread_profiler()->disengage();
1652 ResourceMark rm; 1675 ResourceMark rm;
3627 3650
3628 3651
3629 void Threads::add(JavaThread* p, bool force_daemon) { 3652 void Threads::add(JavaThread* p, bool force_daemon) {
3630 // The threads lock must be owned at this point 3653 // The threads lock must be owned at this point
3631 assert_locked_or_safepoint(Threads_lock); 3654 assert_locked_or_safepoint(Threads_lock);
3655
3656 // See the comment for this method in thread.hpp for its purpose and
3657 // why it is called here.
3658 p->initialize_queues();
3632 p->set_next(_thread_list); 3659 p->set_next(_thread_list);
3633 _thread_list = p; 3660 _thread_list = p;
3634 _number_of_threads++; 3661 _number_of_threads++;
3635 oop threadObj = p->threadObj(); 3662 oop threadObj = p->threadObj();
3636 bool daemon = true; 3663 bool daemon = true;