< prev index next >
src/hotspot/share/runtime/thread.cpp
Print this page
rev 48162 : 8191789: migrate more Thread-SMR stuff from thread.[ch]pp -> threadSMR.[ch]pp
Reviewed-by: stefank
rev 48163 : CR round 0: dcubed - move more code into sort order, add update_smr_tlh_stats(); stefank - refactor Threads::add() and Threads::remove() to allow more ThreadsSMRSupport functions to be private, move is_a_protected_JavaThread_with_lock() to threadSMR.inline.hpp
*** 4365,4384 ****
}
ThreadService::add_thread(p, daemon);
// Maintain fast thread list
! ThreadsList *new_list = ThreadsList::add_thread(ThreadsSMRSupport::get_smr_java_thread_list(), p);
! if (EnableThreadSMRStatistics) {
! ThreadsSMRSupport::inc_smr_java_thread_list_alloc_cnt();
! ThreadsSMRSupport::update_smr_java_thread_list_max(new_list->length());
! }
! // Initial _smr_java_thread_list will not generate a "Threads::add" mesg.
! log_debug(thread, smr)("tid=" UINTX_FORMAT ": Threads::add: new ThreadsList=" INTPTR_FORMAT, os::current_thread_id(), p2i(new_list));
!
! ThreadsList *old_list = ThreadsSMRSupport::xchg_smr_java_thread_list(new_list);
! ThreadsSMRSupport::smr_free_list(old_list);
// Possible GC point.
Events::log(p, "Thread added: " INTPTR_FORMAT, p2i(p));
}
--- 4365,4375 ----
}
ThreadService::add_thread(p, daemon);
// Maintain fast thread list
! ThreadsSMRSupport::add_thread(p);
// Possible GC point.
Events::log(p, "Thread added: " INTPTR_FORMAT, p2i(p));
}
*** 4392,4412 ****
{ MutexLocker ml(Threads_lock);
assert(ThreadsSMRSupport::get_smr_java_thread_list()->includes(p), "p must be present");
// Maintain fast thread list
! ThreadsList *new_list = ThreadsList::remove_thread(ThreadsSMRSupport::get_smr_java_thread_list(), p);
! if (EnableThreadSMRStatistics) {
! ThreadsSMRSupport::inc_smr_java_thread_list_alloc_cnt();
! // This list is smaller so no need to check for a "longest" update.
! }
!
! // Final _smr_java_thread_list will not generate a "Threads::remove" mesg.
! log_debug(thread, smr)("tid=" UINTX_FORMAT ": Threads::remove: new ThreadsList=" INTPTR_FORMAT, os::current_thread_id(), p2i(new_list));
!
! ThreadsList *old_list = ThreadsSMRSupport::xchg_smr_java_thread_list(new_list);
! ThreadsSMRSupport::smr_free_list(old_list);
JavaThread* current = _thread_list;
JavaThread* prev = NULL;
while (current != p) {
--- 4383,4393 ----
{ MutexLocker ml(Threads_lock);
assert(ThreadsSMRSupport::get_smr_java_thread_list()->includes(p), "p must be present");
// Maintain fast thread list
! ThreadsSMRSupport::remove_thread(p);
JavaThread* current = _thread_list;
JavaThread* prev = NULL;
while (current != p) {
< prev index next >