< prev index next >

src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp

Print this page
rev 57843 : [mq]: 8238160-parallel-gc-task-queue-naming


  53 };
  54 
  55 class PCIterateMarkAndPushClosure: public MetadataVisitingOopIterateClosure {
  56 private:
  57   ParCompactionManager* _compaction_manager;
  58 public:
  59   PCIterateMarkAndPushClosure(ParCompactionManager* cm, ReferenceProcessor* rp) : MetadataVisitingOopIterateClosure(rp), _compaction_manager(cm) { }
  60 
  61   template <typename T> void do_oop_nv(T* p)      { _compaction_manager->mark_and_push(p); }
  62   virtual void do_oop(oop* p)                     { do_oop_nv(p); }
  63   virtual void do_oop(narrowOop* p)               { do_oop_nv(p); }
  64 
  65   void do_klass_nv(Klass* k)                      { _compaction_manager->follow_klass(k); }
  66   void do_cld_nv(ClassLoaderData* cld)            { _compaction_manager->follow_class_loader(cld); }
  67 
  68   // This closure provides its own oop verification code.
  69   debug_only(virtual bool should_verify_oops()    { return false; })
  70 };
  71 
  72 inline bool ParCompactionManager::steal(int queue_num, oop& t) {
  73   return stack_array()->steal(queue_num, t);
  74 }
  75 
  76 inline bool ParCompactionManager::steal_objarray(int queue_num, ObjArrayTask& t) {
  77   return _objarray_queues->steal(queue_num, t);
  78 }
  79 
  80 inline bool ParCompactionManager::steal(int queue_num, size_t& region) {
  81   return region_array()->steal(queue_num, region);
  82 }
  83 
  84 inline void ParCompactionManager::push(oop obj) {
  85   _marking_stack.push(obj);
  86 }
  87 
  88 void ParCompactionManager::push_objarray(oop obj, size_t index)
  89 {
  90   ObjArrayTask task(obj, index);
  91   assert(task.is_valid(), "bad ObjArrayTask");
  92   _objarray_stack.push(task);
  93 }
  94 
  95 void ParCompactionManager::push_region(size_t index)
  96 {
  97 #ifdef ASSERT
  98   const ParallelCompactData& sd = PSParallelCompact::summary_data();
  99   ParallelCompactData::RegionData* const region_ptr = sd.region(index);
 100   assert(region_ptr->claimed(), "must be claimed");
 101   assert(region_ptr->_pushed++ == 0, "should only be pushed once");




  53 };
  54 
  55 class PCIterateMarkAndPushClosure: public MetadataVisitingOopIterateClosure {
  56 private:
  57   ParCompactionManager* _compaction_manager;
  58 public:
  59   PCIterateMarkAndPushClosure(ParCompactionManager* cm, ReferenceProcessor* rp) : MetadataVisitingOopIterateClosure(rp), _compaction_manager(cm) { }
  60 
  61   template <typename T> void do_oop_nv(T* p)      { _compaction_manager->mark_and_push(p); }
  62   virtual void do_oop(oop* p)                     { do_oop_nv(p); }
  63   virtual void do_oop(narrowOop* p)               { do_oop_nv(p); }
  64 
  65   void do_klass_nv(Klass* k)                      { _compaction_manager->follow_klass(k); }
  66   void do_cld_nv(ClassLoaderData* cld)            { _compaction_manager->follow_class_loader(cld); }
  67 
  68   // This closure provides its own oop verification code.
  69   debug_only(virtual bool should_verify_oops()    { return false; })
  70 };
  71 
  72 inline bool ParCompactionManager::steal(int queue_num, oop& t) {
  73   return oop_task_queues()->steal(queue_num, t);
  74 }
  75 
  76 inline bool ParCompactionManager::steal_objarray(int queue_num, ObjArrayTask& t) {
  77   return _objarray_task_queues->steal(queue_num, t);
  78 }
  79 
  80 inline bool ParCompactionManager::steal(int queue_num, size_t& region) {
  81   return region_task_queues()->steal(queue_num, region);
  82 }
  83 
  84 inline void ParCompactionManager::push(oop obj) {
  85   _marking_stack.push(obj);
  86 }
  87 
  88 void ParCompactionManager::push_objarray(oop obj, size_t index)
  89 {
  90   ObjArrayTask task(obj, index);
  91   assert(task.is_valid(), "bad ObjArrayTask");
  92   _objarray_stack.push(task);
  93 }
  94 
  95 void ParCompactionManager::push_region(size_t index)
  96 {
  97 #ifdef ASSERT
  98   const ParallelCompactData& sd = PSParallelCompact::summary_data();
  99   ParallelCompactData::RegionData* const region_ptr = sd.region(index);
 100   assert(region_ptr->claimed(), "must be claimed");
 101   assert(region_ptr->_pushed++ == 0, "should only be pushed once");


< prev index next >