< prev index next >

src/hotspot/share/runtime/threadSMR.hpp

Print this page




 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;
 167   ThreadsList* _next_list;
 168   JavaThread *const *const _threads;
 169   volatile intx _nested_handle_cnt;
 170 
 171   template <class T>
 172   void threads_do_dispatch(T *cl, JavaThread *const thread) const;
 173 
 174   ThreadsList *next_list() const        { return _next_list; }
 175   void set_next_list(ThreadsList *list) { _next_list = list; }
 176 
 177   void inc_nested_handle_cnt();
 178   void dec_nested_handle_cnt();
 179 
 180   static ThreadsList* add_thread(ThreadsList* list, JavaThread* java_thread);
 181   static ThreadsList* remove_thread(ThreadsList* list, JavaThread* java_thread);
 182 


 183 public:
 184   ThreadsList(int entries);
 185   ~ThreadsList();
 186 
 187   template <class T>
 188   void threads_do(T *cl) const;
 189 
 190   uint length() const                       { return _length; }
 191 
 192   JavaThread *const thread_at(uint i) const { return _threads[i]; }
 193 
 194   JavaThread *const *threads() const        { return _threads; }
 195 
 196   // Returns -1 if target is not found.
 197   int find_index_of_JavaThread(JavaThread* target);
 198   JavaThread* find_JavaThread_from_java_tid(jlong java_tid) const;
 199   bool includes(const JavaThread * const p) const;
 200 };
 201 
 202 // An abstract safe ptr to a ThreadsList comprising either a stable hazard ptr




 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;
 167   ThreadsList* _next_list;
 168   JavaThread *const *const _threads;
 169   volatile intx _nested_handle_cnt;
 170 
 171   template <class T>
 172   void threads_do_dispatch(T *cl, JavaThread *const thread) const;
 173 
 174   ThreadsList *next_list() const        { return _next_list; }
 175   void set_next_list(ThreadsList *list) { _next_list = list; }
 176 
 177   void inc_nested_handle_cnt();
 178   void dec_nested_handle_cnt();
 179 
 180   static ThreadsList* add_thread(ThreadsList* list, JavaThread* java_thread);
 181   static ThreadsList* remove_thread(ThreadsList* list, JavaThread* java_thread);
 182  
 183   // Used by find_JavaThread_from_java_tid
 184   static bool is_valid_java_thread(jlong java_tid, JavaThread* jt);
 185 public:
 186   ThreadsList(int entries);
 187   ~ThreadsList();
 188 
 189   template <class T>
 190   void threads_do(T *cl) const;
 191 
 192   uint length() const                       { return _length; }
 193 
 194   JavaThread *const thread_at(uint i) const { return _threads[i]; }
 195 
 196   JavaThread *const *threads() const        { return _threads; }
 197 
 198   // Returns -1 if target is not found.
 199   int find_index_of_JavaThread(JavaThread* target);
 200   JavaThread* find_JavaThread_from_java_tid(jlong java_tid) const;
 201   bool includes(const JavaThread * const p) const;
 202 };
 203 
 204 // An abstract safe ptr to a ThreadsList comprising either a stable hazard ptr


< prev index next >