--- old/src/hotspot/share/runtime/threadSMR.hpp 2017-12-05 16:18:27.000000000 -0500 +++ new/src/hotspot/share/runtime/threadSMR.hpp 2017-12-05 16:18:26.000000000 -0500 @@ -110,8 +110,11 @@ static ThreadsList *acquire_stable_list_fast_path(Thread *self); static ThreadsList *acquire_stable_list_nested_path(Thread *self); static void add_smr_deleted_thread_times(uint add_value); + static void add_smr_tlh_times(uint add_value); static void clear_smr_delete_notify(); static void inc_smr_deleted_thread_cnt(); + static void inc_smr_java_thread_list_alloc_cnt(); + static void inc_smr_tlh_cnt(); static bool is_a_protected_JavaThread(JavaThread *thread); static void release_stable_list_fast_path(Thread *self); static void release_stable_list_nested_path(Thread *self); @@ -119,24 +122,21 @@ static void set_smr_delete_notify(); static Monitor* smr_delete_lock() { return _smr_delete_lock; } static bool smr_delete_notify(); + static void smr_free_list(ThreadsList* threads); static void update_smr_deleted_thread_time_max(uint new_value); + static void update_smr_java_thread_list_max(uint new_value); + static void update_smr_tlh_time_max(uint new_value); + static ThreadsList* xchg_smr_java_thread_list(ThreadsList* new_list); public: static ThreadsList *acquire_stable_list(Thread *self, bool is_ThreadsListSetter); - static void add_smr_tlh_times(uint add_value); + static void add_thread(JavaThread *thread); static ThreadsList* get_smr_java_thread_list(); - static void inc_smr_java_thread_list_alloc_cnt(); - static void inc_smr_tlh_cnt(); - static bool is_a_protected_JavaThread_with_lock(JavaThread *thread) { - MutexLockerEx ml(Threads_lock->owned_by_self() ? NULL : Threads_lock); - return is_a_protected_JavaThread(thread); - } + static bool is_a_protected_JavaThread_with_lock(JavaThread *thread); static void release_stable_list(Thread *self); + static void remove_thread(JavaThread *thread); static void smr_delete(JavaThread *thread); - static void smr_free_list(ThreadsList* threads); - static void update_smr_java_thread_list_max(uint new_value); - static void update_smr_tlh_time_max(uint new_value); - static ThreadsList* xchg_smr_java_thread_list(ThreadsList* new_list); + static void update_smr_tlh_stats(uint millis); // Logging and printing support: static void log_smr_statistics(); @@ -159,6 +159,9 @@ ThreadsList *next_list() const { return _next_list; } void set_next_list(ThreadsList *list) { _next_list = list; } + static ThreadsList* add_thread(ThreadsList* list, JavaThread* java_thread); + static ThreadsList* remove_thread(ThreadsList* list, JavaThread* java_thread); + public: ThreadsList(int entries); ~ThreadsList(); @@ -176,9 +179,6 @@ int find_index_of_JavaThread(JavaThread* target); JavaThread* find_JavaThread_from_java_tid(jlong java_tid) const; bool includes(const JavaThread * const p) const; - - static ThreadsList* add_thread(ThreadsList* list, JavaThread* java_thread); - static ThreadsList* remove_thread(ThreadsList* list, JavaThread* java_thread); }; // Linked list of ThreadsLists to support nested ThreadsListHandles.