< prev index next >

src/hotspot/share/gc/z/zBarrierSet.hpp

Concurrent class unloading

22 
23 #ifndef SHARE_GC_Z_ZBARRIERSET_HPP                                                                                                   
24 #define SHARE_GC_Z_ZBARRIERSET_HPP                                                                                                   
25 
26 #include "gc/shared/barrierSet.hpp"                                                                                                  
27 
28 class ZBarrierSetAssembler;                                                                                                          
29 
30 class ZBarrierSet : public BarrierSet {                                                                                              
31 public:                                                                                                                              
32   ZBarrierSet();                                                                                                                     
33 
34   static ZBarrierSetAssembler* assembler();                                                                                          
35   static bool barrier_needed(DecoratorSet decorators, BasicType type);                                                               
36 
37   virtual void on_thread_create(Thread* thread);                                                                                     
38   virtual void on_thread_destroy(Thread* thread);                                                                                    
39   virtual void on_thread_attach(JavaThread* thread);                                                                                 
40   virtual void on_thread_detach(JavaThread* thread);                                                                                 
41 
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
42   virtual void print_on(outputStream* st) const {}                                                                                   
43 
44   template <DecoratorSet decorators, typename BarrierSetT = ZBarrierSet>                                                             
45   class AccessBarrier : public BarrierSet::AccessBarrier<decorators, BarrierSetT> {                                                  
46   private:                                                                                                                           
47     typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;                                                                  
48 
49     template <DecoratorSet expected>                                                                                                 
50     static void verify_decorators_present();                                                                                         
51 
52     template <DecoratorSet expected>                                                                                                 
53     static void verify_decorators_absent();                                                                                          
54 
55     static oop* field_addr(oop base, ptrdiff_t offset);                                                                              
56 
57     template <typename T>                                                                                                            
58     static oop load_barrier_on_oop_field_preloaded(T* addr, oop o);                                                                  
59 
60     template <typename T>                                                                                                            

22 
23 #ifndef SHARE_GC_Z_ZBARRIERSET_HPP
24 #define SHARE_GC_Z_ZBARRIERSET_HPP
25 
26 #include "gc/shared/barrierSet.hpp"
27 
28 class ZBarrierSetAssembler;
29 
30 class ZBarrierSet : public BarrierSet {
31 public:
32   ZBarrierSet();
33 
34   static ZBarrierSetAssembler* assembler();
35   static bool barrier_needed(DecoratorSet decorators, BasicType type);
36 
37   virtual void on_thread_create(Thread* thread);
38   virtual void on_thread_destroy(Thread* thread);
39   virtual void on_thread_attach(JavaThread* thread);
40   virtual void on_thread_detach(JavaThread* thread);
41 
42   // nmethod entry barrier support
43   virtual bool needs_nmethod_entry_barrier() const;
44   virtual int nmethod_entry_barrier_state() const;
45   virtual ByteSize nmethod_entry_barrier_state_thread_offset() const;
46   virtual bool on_nmethod_entry_barrier(nmethod* nm, nmethodBarrier* nmbarrier);
47 
48   virtual void print_on(outputStream* st) const {}
49 
50   template <DecoratorSet decorators, typename BarrierSetT = ZBarrierSet>
51   class AccessBarrier : public BarrierSet::AccessBarrier<decorators, BarrierSetT> {
52   private:
53     typedef BarrierSet::AccessBarrier<decorators, BarrierSetT> Raw;
54 
55     template <DecoratorSet expected>
56     static void verify_decorators_present();
57 
58     template <DecoratorSet expected>
59     static void verify_decorators_absent();
60 
61     static oop* field_addr(oop base, ptrdiff_t offset);
62 
63     template <typename T>
64     static oop load_barrier_on_oop_field_preloaded(T* addr, oop o);
65 
66     template <typename T>
< prev index next >