src/hotspot/share/gc/parallel/psParallelCompact.inline.hpp
changeset 52119 88916200bdd7
parent 50752 9d62da00bf15
child 53244 9807daeb47c4
equal deleted inserted replaced
52118:49f627781c2a 52119:88916200bdd7
   122       RawAccess<IS_NOT_NULL>::oop_store(p, new_obj);
   122       RawAccess<IS_NOT_NULL>::oop_store(p, new_obj);
   123     }
   123     }
   124   }
   124   }
   125 }
   125 }
   126 
   126 
   127 template <typename T>
   127 class PCAdjustPointerClosure: public BasicOopIterateClosure {
   128 void PSParallelCompact::AdjustPointerClosure::do_oop_work(T* p) {
   128 public:
   129   adjust_pointer(p, _cm);
   129   PCAdjustPointerClosure(ParCompactionManager* cm) {
   130 }
   130     assert(cm != NULL, "associate ParCompactionManage should not be NULL");
       
   131     _cm = cm;
       
   132   }
       
   133   template <typename T> void do_oop_nv(T* p) { PSParallelCompact::adjust_pointer(p, _cm); }
       
   134   virtual void do_oop(oop* p)                { do_oop_nv(p); }
       
   135   virtual void do_oop(narrowOop* p)          { do_oop_nv(p); }
   131 
   136 
   132 inline void PSParallelCompact::AdjustPointerClosure::do_oop(oop* p)       { do_oop_work(p); }
   137   // This closure provides its own oop verification code.
   133 inline void PSParallelCompact::AdjustPointerClosure::do_oop(narrowOop* p) { do_oop_work(p); }
   138   debug_only(virtual bool should_verify_oops() { return false; })
       
   139   virtual ReferenceIterationMode reference_iteration_mode() { return DO_FIELDS; }
       
   140 private:
       
   141   ParCompactionManager* _cm;
       
   142 };
   134 
   143 
   135 #endif // SHARE_VM_GC_PARALLEL_PSPARALLELCOMPACT_INLINE_HPP
   144 #endif // SHARE_VM_GC_PARALLEL_PSPARALLELCOMPACT_INLINE_HPP