< prev index next >

src/hotspot/share/gc/cms/parOopClosures.hpp

Print this page




  40 class ParScanClosure: public OopsInClassLoaderDataOrGenClosure {
  41  protected:
  42   ParScanThreadState* _par_scan_state;
  43   ParNewGeneration*   _g;
  44   HeapWord*           _boundary;
  45   template <class T> void inline par_do_barrier(T* p);
  46   template <class T> void inline do_oop_work(T* p,
  47                                              bool gc_barrier,
  48                                              bool root_scan);
  49  public:
  50   ParScanClosure(ParNewGeneration* g, ParScanThreadState* par_scan_state);
  51 };
  52 
  53 class ParScanWithBarrierClosure: public ParScanClosure {
  54  public:
  55   ParScanWithBarrierClosure(ParNewGeneration* g,
  56                             ParScanThreadState* par_scan_state) :
  57     ParScanClosure(g, par_scan_state) {}
  58   virtual void do_oop(oop* p);
  59   virtual void do_oop(narrowOop* p);
  60   inline void do_oop_nv(oop* p);
  61   inline void do_oop_nv(narrowOop* p);
  62 };
  63 
  64 class ParScanWithoutBarrierClosure: public ParScanClosure {
  65  public:
  66   ParScanWithoutBarrierClosure(ParNewGeneration* g,
  67                                ParScanThreadState* par_scan_state) :
  68     ParScanClosure(g, par_scan_state) {}
  69   virtual void do_oop(oop* p);
  70   virtual void do_oop(narrowOop* p);
  71   inline void do_oop_nv(oop* p);
  72   inline void do_oop_nv(narrowOop* p);
  73 };
  74 
  75 class ParRootScanWithBarrierTwoGensClosure: public ParScanClosure {
  76  public:
  77   ParRootScanWithBarrierTwoGensClosure(ParNewGeneration* g,
  78                                        ParScanThreadState* par_scan_state) :
  79     ParScanClosure(g, par_scan_state) {}
  80   virtual void do_oop(oop* p);
  81   virtual void do_oop(narrowOop* p);
  82 };
  83 
  84 class ParRootScanWithoutBarrierClosure: public ParScanClosure {
  85  public:
  86   ParRootScanWithoutBarrierClosure(ParNewGeneration* g,
  87                                    ParScanThreadState* par_scan_state) :
  88     ParScanClosure(g, par_scan_state) {}
  89   virtual void do_oop(oop* p);
  90   virtual void do_oop(narrowOop* p);
  91 };
  92 
  93 class ParScanWeakRefClosure: public ScanWeakRefClosure {
  94  protected:
  95   ParScanThreadState* _par_scan_state;
  96   template <class T> inline void do_oop_work(T* p);
  97  public:
  98   ParScanWeakRefClosure(ParNewGeneration* g,
  99                         ParScanThreadState* par_scan_state);
 100   virtual void do_oop(oop* p);
 101   virtual void do_oop(narrowOop* p);
 102   inline void do_oop_nv(oop* p);
 103   inline void do_oop_nv(narrowOop* p);
 104 };
 105 
 106 class ParEvacuateFollowersClosure: public VoidClosure {
 107  private:
 108   ParScanThreadState* _par_scan_state;
 109   ParScanThreadState* par_scan_state() { return _par_scan_state; }
 110 
 111   // We want to preserve the specific types here (rather than "OopClosure")
 112   // for later de-virtualization of do_oop calls.
 113   ParScanWithoutBarrierClosure* _to_space_closure;
 114   ParScanWithoutBarrierClosure* to_space_closure() {
 115     return _to_space_closure;
 116   }
 117   ParRootScanWithoutBarrierClosure* _to_space_root_closure;
 118   ParRootScanWithoutBarrierClosure* to_space_root_closure() {
 119     return _to_space_root_closure;
 120   }
 121 
 122   ParScanWithBarrierClosure* _old_gen_closure;
 123   ParScanWithBarrierClosure* old_gen_closure () {




  40 class ParScanClosure: public OopsInClassLoaderDataOrGenClosure {
  41  protected:
  42   ParScanThreadState* _par_scan_state;
  43   ParNewGeneration*   _g;
  44   HeapWord*           _boundary;
  45   template <class T> void inline par_do_barrier(T* p);
  46   template <class T> void inline do_oop_work(T* p,
  47                                              bool gc_barrier,
  48                                              bool root_scan);
  49  public:
  50   ParScanClosure(ParNewGeneration* g, ParScanThreadState* par_scan_state);
  51 };
  52 
  53 class ParScanWithBarrierClosure: public ParScanClosure {
  54  public:
  55   ParScanWithBarrierClosure(ParNewGeneration* g,
  56                             ParScanThreadState* par_scan_state) :
  57     ParScanClosure(g, par_scan_state) {}
  58   virtual void do_oop(oop* p);
  59   virtual void do_oop(narrowOop* p);


  60 };
  61 
  62 class ParScanWithoutBarrierClosure: public ParScanClosure {
  63  public:
  64   ParScanWithoutBarrierClosure(ParNewGeneration* g,
  65                                ParScanThreadState* par_scan_state) :
  66     ParScanClosure(g, par_scan_state) {}
  67   virtual void do_oop(oop* p);
  68   virtual void do_oop(narrowOop* p);


  69 };
  70 
  71 class ParRootScanWithBarrierTwoGensClosure: public ParScanClosure {
  72  public:
  73   ParRootScanWithBarrierTwoGensClosure(ParNewGeneration* g,
  74                                        ParScanThreadState* par_scan_state) :
  75     ParScanClosure(g, par_scan_state) {}
  76   virtual void do_oop(oop* p);
  77   virtual void do_oop(narrowOop* p);
  78 };
  79 
  80 class ParRootScanWithoutBarrierClosure: public ParScanClosure {
  81  public:
  82   ParRootScanWithoutBarrierClosure(ParNewGeneration* g,
  83                                    ParScanThreadState* par_scan_state) :
  84     ParScanClosure(g, par_scan_state) {}
  85   virtual void do_oop(oop* p);
  86   virtual void do_oop(narrowOop* p);
  87 };
  88 
  89 class ParScanWeakRefClosure: public ScanWeakRefClosure {
  90  protected:
  91   ParScanThreadState* _par_scan_state;
  92   template <class T> inline void do_oop_work(T* p);
  93  public:
  94   ParScanWeakRefClosure(ParNewGeneration* g,
  95                         ParScanThreadState* par_scan_state);
  96   virtual void do_oop(oop* p);
  97   virtual void do_oop(narrowOop* p);


  98 };
  99 
 100 class ParEvacuateFollowersClosure: public VoidClosure {
 101  private:
 102   ParScanThreadState* _par_scan_state;
 103   ParScanThreadState* par_scan_state() { return _par_scan_state; }
 104 
 105   // We want to preserve the specific types here (rather than "OopClosure")
 106   // for later de-virtualization of do_oop calls.
 107   ParScanWithoutBarrierClosure* _to_space_closure;
 108   ParScanWithoutBarrierClosure* to_space_closure() {
 109     return _to_space_closure;
 110   }
 111   ParRootScanWithoutBarrierClosure* _to_space_root_closure;
 112   ParRootScanWithoutBarrierClosure* to_space_root_closure() {
 113     return _to_space_root_closure;
 114   }
 115 
 116   ParScanWithBarrierClosure* _old_gen_closure;
 117   ParScanWithBarrierClosure* old_gen_closure () {


< prev index next >