hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp
changeset 3696 9e5d9b5e1049
parent 3690 dba50b88bd50
child 3912 3aaaaad1ccb0
equal deleted inserted replaced
3695:421cfcc8843c 3696:9e5d9b5e1049
   153   inline void do_oop_nv(narrowOop* p) { PushAndMarkClosure::do_oop_work(p); }
   153   inline void do_oop_nv(narrowOop* p) { PushAndMarkClosure::do_oop_work(p); }
   154   bool do_header() { return true; }
   154   bool do_header() { return true; }
   155   Prefetch::style prefetch_style() {
   155   Prefetch::style prefetch_style() {
   156     return Prefetch::do_read;
   156     return Prefetch::do_read;
   157   }
   157   }
       
   158   // In support of class unloading
       
   159   virtual const bool should_remember_mdo() const {
       
   160     return false;
       
   161     // return _should_remember_klasses;
       
   162   }
       
   163   virtual void remember_mdo(DataLayout* v);
   158 };
   164 };
   159 
   165 
   160 // In the parallel case, the revisit stack, the bit map and the
   166 // In the parallel case, the revisit stack, the bit map and the
   161 // reference processor are currently all shared. Access to
   167 // reference processor are currently all shared. Access to
   162 // these shared mutable structures must use appropriate
   168 // these shared mutable structures must use appropriate
   183   inline void do_oop_nv(narrowOop* p) { Par_PushAndMarkClosure::do_oop_work(p); }
   189   inline void do_oop_nv(narrowOop* p) { Par_PushAndMarkClosure::do_oop_work(p); }
   184   bool do_header() { return true; }
   190   bool do_header() { return true; }
   185   Prefetch::style prefetch_style() {
   191   Prefetch::style prefetch_style() {
   186     return Prefetch::do_read;
   192     return Prefetch::do_read;
   187   }
   193   }
       
   194   // In support of class unloading
       
   195   virtual const bool should_remember_mdo() const {
       
   196     return false;
       
   197     // return _should_remember_klasses;
       
   198   }
       
   199   virtual void remember_mdo(DataLayout* v);
   188 };
   200 };
   189 
   201 
   190 // The non-parallel version (the parallel version appears further below).
   202 // The non-parallel version (the parallel version appears further below).
   191 class MarkRefsIntoAndScanClosure: public OopsInGenClosure {
   203 class MarkRefsIntoAndScanClosure: public OopsInGenClosure {
   192  private:
   204  private:
   301                     MarkFromRootsClosure* parent);
   313                     MarkFromRootsClosure* parent);
   302   virtual void do_oop(oop* p);
   314   virtual void do_oop(oop* p);
   303   virtual void do_oop(narrowOop* p);
   315   virtual void do_oop(narrowOop* p);
   304   inline void do_oop_nv(oop* p)       { PushOrMarkClosure::do_oop_work(p); }
   316   inline void do_oop_nv(oop* p)       { PushOrMarkClosure::do_oop_work(p); }
   305   inline void do_oop_nv(narrowOop* p) { PushOrMarkClosure::do_oop_work(p); }
   317   inline void do_oop_nv(narrowOop* p) { PushOrMarkClosure::do_oop_work(p); }
       
   318   // In support of class unloading
       
   319   virtual const bool should_remember_mdo() const {
       
   320     return false;
       
   321     // return _should_remember_klasses;
       
   322   }
       
   323   virtual void remember_mdo(DataLayout* v);
       
   324 
   306   // Deal with a stack overflow condition
   325   // Deal with a stack overflow condition
   307   void handle_stack_overflow(HeapWord* lost);
   326   void handle_stack_overflow(HeapWord* lost);
   308  private:
   327  private:
   309   inline void do_yield_check();
   328   inline void do_yield_check();
   310 };
   329 };
   338                         Par_MarkFromRootsClosure* parent);
   357                         Par_MarkFromRootsClosure* parent);
   339   virtual void do_oop(oop* p);
   358   virtual void do_oop(oop* p);
   340   virtual void do_oop(narrowOop* p);
   359   virtual void do_oop(narrowOop* p);
   341   inline void do_oop_nv(oop* p)       { Par_PushOrMarkClosure::do_oop_work(p); }
   360   inline void do_oop_nv(oop* p)       { Par_PushOrMarkClosure::do_oop_work(p); }
   342   inline void do_oop_nv(narrowOop* p) { Par_PushOrMarkClosure::do_oop_work(p); }
   361   inline void do_oop_nv(narrowOop* p) { Par_PushOrMarkClosure::do_oop_work(p); }
       
   362   // In support of class unloading
       
   363   virtual const bool should_remember_mdo() const {
       
   364     return false;
       
   365     // return _should_remember_klasses;
       
   366   }
       
   367   virtual void remember_mdo(DataLayout* v);
       
   368 
   343   // Deal with a stack overflow condition
   369   // Deal with a stack overflow condition
   344   void handle_stack_overflow(HeapWord* lost);
   370   void handle_stack_overflow(HeapWord* lost);
   345  private:
   371  private:
   346   inline void do_yield_check();
   372   inline void do_yield_check();
   347 };
   373 };