< prev index next >

src/hotspot/share/runtime/thread.hpp


310   // Point to the last handle mark                                                                                                   
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   // debug support for checking if code does allow safepoints or not                                                                 
331   // GC points in the VM can happen because of allocation, invoking a VM operation, or blocking on                                   
332   // mutex, or blocking on an object synchronizer (Java locking).                                                                    
333   // If !allow_safepoint(), then an assertion failure will happen in any of the above cases                                          
334   // If !allow_allocation(), then an assertion failure will happen during allocation                                                 
335   // (Hence, !allow_safepoint() => !allow_allocation()).                                                                             
336   //                                                                                                                                 
337   // The two classes NoSafepointVerifier and No_Allocation_Verifier are used to set these counters.                                  
338   //                                                                                                                                 
339   NOT_PRODUCT(int _allow_safepoint_count;)      // If 0, thread allow a safepoint to happen                                          
340   debug_only(int _allow_allocation_count;)     // If 0, the thread is allowed to allocate oops.                                      
341 
342   // Used by SkipGCALot class.                                                                                                       
343   NOT_PRODUCT(bool _skip_gcalot;)               // Should we elide gc-a-lot?                                                         
344 
345   friend class NoAllocVerifier;                                                                                                      
346   friend class NoSafepointVerifier;                                                                                                  
347   friend class PauseNoSafepointVerifier;                                                                                             
348   friend class GCLocker;                                                                                                             

310   // Point to the last handle mark
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.
358   NOT_PRODUCT(bool _skip_gcalot;)               // Should we elide gc-a-lot?
359 
360   friend class NoAllocVerifier;
361   friend class NoSafepointVerifier;
362   friend class PauseNoSafepointVerifier;
363   friend class GCLocker;
< prev index next >