< prev index next >

src/hotspot/share/runtime/thread.hpp


63 
64 class JvmtiThreadState;                                                                                                              
65 class ThreadStatistics;                                                                                                              
66 class ConcurrentLocksDump;                                                                                                           
67 class ParkEvent;                                                                                                                     
68 class Parker;                                                                                                                        
69 
70 class ciEnv;                                                                                                                         
71 class CompileThread;                                                                                                                 
72 class CompileLog;                                                                                                                    
73 class CompileTask;                                                                                                                   
74 class CompileQueue;                                                                                                                  
75 class CompilerCounters;                                                                                                              
76 class vframeArray;                                                                                                                   
77 
78 class DeoptResourceMark;                                                                                                             
79 class jvmtiDeferredLocalVariableSet;                                                                                                 
80 
81 class GCTaskQueue;                                                                                                                   
82 class ThreadClosure;                                                                                                                 
                                                                                                                                     
83 class IdealGraphPrinter;                                                                                                             
84 
85 class Metadata;                                                                                                                      
86 template <class T, MEMFLAGS F> class ChunkedList;                                                                                    
87 typedef ChunkedList<Metadata*, mtInternal> MetadataOnStackBuffer;                                                                    
88 
89 DEBUG_ONLY(class ResourceMark;)                                                                                                      
90 
91 class WorkerThread;                                                                                                                  
92 
93 // Class hierarchy                                                                                                                   
94 // - Thread                                                                                                                          
95 //   - JavaThread                                                                                                                    
96 //     - various subclasses eg CompilerThread, ServiceThread                                                                         
97 //   - NonJavaThread                                                                                                                 
98 //     - NamedThread                                                                                                                 
99 //       - VMThread                                                                                                                  
100 //       - ConcurrentGCThread                                                                                                        
101 //       - WorkerThread                                                                                                              

63 
64 class JvmtiThreadState;
65 class ThreadStatistics;
66 class ConcurrentLocksDump;
67 class ParkEvent;
68 class Parker;
69 
70 class ciEnv;
71 class CompileThread;
72 class CompileLog;
73 class CompileTask;
74 class CompileQueue;
75 class CompilerCounters;
76 class vframeArray;
77 
78 class DeoptResourceMark;
79 class jvmtiDeferredLocalVariableSet;
80 
81 class GCTaskQueue;
82 class ThreadClosure;
83 class ICRefillVerifier;
84 class IdealGraphPrinter;
85 
86 class Metadata;
87 template <class T, MEMFLAGS F> class ChunkedList;
88 typedef ChunkedList<Metadata*, mtInternal> MetadataOnStackBuffer;
89 
90 DEBUG_ONLY(class ResourceMark;)
91 
92 class WorkerThread;
93 
94 // Class hierarchy
95 // - Thread
96 //   - JavaThread
97 //     - various subclasses eg CompilerThread, ServiceThread
98 //   - NonJavaThread
99 //     - NamedThread
100 //       - VMThread
101 //       - ConcurrentGCThread
102 //       - WorkerThread

311   HandleMark* _last_handle_mark;                                                                                                     
312 
313   // The parity of the last strong_roots iteration in which this thread was                                                          
314   // claimed as a task.                                                                                                              
315   int _oops_do_parity;                                                                                                               
316 
317   // Support for GlobalCounter                                                                                                       
318  private:                                                                                                                            
319   volatile uintx _rcu_counter;                                                                                                       
320  public:                                                                                                                             
321   volatile uintx* get_rcu_counter() {                                                                                                
322     return &_rcu_counter;                                                                                                            
323   }                                                                                                                                  
324 
325  public:                                                                                                                             
326   void set_last_handle_mark(HandleMark* mark)   { _last_handle_mark = mark; }                                                        
327   HandleMark* last_handle_mark() const          { return _last_handle_mark; }                                                        
328  private:                                                                                                                            
329 
330 #ifdef ASSERT                                                                                                                        
331   void* _missed_ic_stub_refill_mark;                                                                                                 
332 
333  public:                                                                                                                             
334   void* missed_ic_stub_refill_mark() {                                                                                               
335     return _missed_ic_stub_refill_mark;                                                                                              
336   }                                                                                                                                  
337 
338   void set_missed_ic_stub_refill_mark(void* mark) {                                                                                  
339     _missed_ic_stub_refill_mark = mark;                                                                                              
340   }                                                                                                                                  
341 #endif                                                                                                                               
342 
343  private:                                                                                                                            
344 
345   // debug support for checking if code does allow safepoints or not                                                                 
346   // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on                                   
347   // mutex, or blocking on an object synchronizer (Java locking).                                                                    
348   // If !allow_safepoint(), then an assertion failure will happen in any of the above cases                                          
349   // If !allow_allocation(), then an assertion failure will happen during allocation                                                 
350   // (Hence, !allow_safepoint() => !allow_allocation()).                                                                             
351   //                                                                                                                                 
352   // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.                                  
353   //                                                                                                                                 
354   NOT_PRODUCT(int _allow_safepoint_count;)      // If 0, thread allow a safepoint to happen                                          
355   debug_only(int _allow_allocation_count;)     // If 0, the thread is allowed to allocate oops.                                      
356 
357   // Used by SkipGCALot class.                                                                                                       

312   HandleMark* _last_handle_mark;
313 
314   // The parity of the last strong_roots iteration in which this thread was
315   // claimed as a task.
316   int _oops_do_parity;
317 
318   // Support for GlobalCounter
319  private:
320   volatile uintx _rcu_counter;
321  public:
322   volatile uintx* get_rcu_counter() {
323     return &_rcu_counter;
324   }
325 
326  public:
327   void set_last_handle_mark(HandleMark* mark)   { _last_handle_mark = mark; }
328   HandleMark* last_handle_mark() const          { return _last_handle_mark; }
329  private:
330 
331 #ifdef ASSERT
332   ICRefillVerifier* _missed_ic_stub_refill_mark;
333 
334  public:
335   ICRefillVerifier* missed_ic_stub_refill_mark() {
336     return _missed_ic_stub_refill_mark;
337   }
338 
339   void set_missed_ic_stub_refill_mark(ICRefillVerifier* mark) {
340     _missed_ic_stub_refill_mark = mark;
341   }
342 #endif
343 
344  private:
345 
346   // debug support for checking if code does allow safepoints or not
347   // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on
348   // mutex, or blocking on an object synchronizer (Java locking).
349   // If !allow_safepoint(), then an assertion failure will happen in any of the above cases
350   // If !allow_allocation(), then an assertion failure will happen during allocation
351   // (Hence, !allow_safepoint() => !allow_allocation()).
352   //
353   // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.
354   //
355   NOT_PRODUCT(int _allow_safepoint_count;)      // If 0, thread allow a safepoint to happen
356   debug_only(int _allow_allocation_count;)     // If 0, the thread is allowed to allocate oops.
357 
358   // Used by SkipGCALot class.
< prev index next >