127 static bool delete_notify();
128 static void free_list(ThreadsList* threads);
129 static void inc_deleted_thread_cnt();
130 static void inc_java_thread_list_alloc_cnt();
131 static void inc_tlh_cnt();
132 static void release_stable_list_wake_up(bool is_nested);
133 static void set_delete_notify();
134 static void threads_do(ThreadClosure *tc);
135 static void threads_do(ThreadClosure *tc, ThreadsList *list);
136 static void update_deleted_thread_time_max(uint new_value);
137 static void update_java_thread_list_max(uint new_value);
138 static void update_tlh_time_max(uint new_value);
139 static void verify_hazard_ptr_scanned(Thread *self, ThreadsList *threads);
140 static ThreadsList* xchg_java_thread_list(ThreadsList* new_list);
141
142 public:
143 static void add_thread(JavaThread *thread);
144 static ThreadsList* get_java_thread_list();
145 static bool is_a_protected_JavaThread(JavaThread *thread);
146 static bool is_a_protected_JavaThread_with_lock(JavaThread *thread);
147 static bool is_bootstrap_list(ThreadsList* list);
148 static void remove_thread(JavaThread *thread);
149 static void smr_delete(JavaThread *thread);
150 static void update_tlh_stats(uint millis);
151
152 // Logging and printing support:
153 static void log_statistics();
154 static void print_info_elements_on(outputStream* st, ThreadsList* t_list);
155 static void print_info_on(outputStream* st);
156 static void print_info_on(const Thread* thread, outputStream* st);
157 };
158
159 // A fast list of JavaThreads.
160 //
161 class ThreadsList : public CHeapObj<mtThread> {
162 friend class VMStructs;
163 friend class SafeThreadsListPtr; // for {dec,inc}_nested_handle_cnt() access
164 friend class ThreadsSMRSupport; // for _nested_handle_cnt, {add,remove}_thread(), {,set_}next_list() access
165
166 const uint _length;
|
127 static bool delete_notify();
128 static void free_list(ThreadsList* threads);
129 static void inc_deleted_thread_cnt();
130 static void inc_java_thread_list_alloc_cnt();
131 static void inc_tlh_cnt();
132 static void release_stable_list_wake_up(bool is_nested);
133 static void set_delete_notify();
134 static void threads_do(ThreadClosure *tc);
135 static void threads_do(ThreadClosure *tc, ThreadsList *list);
136 static void update_deleted_thread_time_max(uint new_value);
137 static void update_java_thread_list_max(uint new_value);
138 static void update_tlh_time_max(uint new_value);
139 static void verify_hazard_ptr_scanned(Thread *self, ThreadsList *threads);
140 static ThreadsList* xchg_java_thread_list(ThreadsList* new_list);
141
142 public:
143 static void add_thread(JavaThread *thread);
144 static ThreadsList* get_java_thread_list();
145 static bool is_a_protected_JavaThread(JavaThread *thread);
146 static bool is_a_protected_JavaThread_with_lock(JavaThread *thread);
147 static void wait_until_not_protected(JavaThread *thread);
148 static bool is_bootstrap_list(ThreadsList* list);
149 static void remove_thread(JavaThread *thread);
150 static void smr_delete(JavaThread *thread);
151 static void update_tlh_stats(uint millis);
152
153 // Logging and printing support:
154 static void log_statistics();
155 static void print_info_elements_on(outputStream* st, ThreadsList* t_list);
156 static void print_info_on(outputStream* st);
157 static void print_info_on(const Thread* thread, outputStream* st);
158 };
159
160 // A fast list of JavaThreads.
161 //
162 class ThreadsList : public CHeapObj<mtThread> {
163 friend class VMStructs;
164 friend class SafeThreadsListPtr; // for {dec,inc}_nested_handle_cnt() access
165 friend class ThreadsSMRSupport; // for _nested_handle_cnt, {add,remove}_thread(), {,set_}next_list() access
166
167 const uint _length;
|