< prev index next >

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

Print this page




  30 #include "gc/parallel/psCompactionManager.hpp"
  31 #include "gc/parallel/psParallelCompact.inline.hpp"
  32 #include "gc/shared/taskqueue.inline.hpp"
  33 #include "oops/access.inline.hpp"
  34 #include "oops/arrayOop.inline.hpp"
  35 #include "oops/compressedOops.inline.hpp"
  36 #include "oops/objArrayOop.inline.hpp"
  37 #include "oops/oop.inline.hpp"
  38 #include "utilities/debug.hpp"
  39 #include "utilities/globalDefinitions.hpp"
  40 
  41 class PCMarkAndPushClosure: public OopClosure {
  42 private:
  43   ParCompactionManager* _compaction_manager;
  44 public:
  45   PCMarkAndPushClosure(ParCompactionManager* cm) : _compaction_manager(cm) { }
  46 
  47   template <typename T> void do_oop_nv(T* p)      { _compaction_manager->mark_and_push(p); }
  48   virtual void do_oop(oop* p)                     { do_oop_nv(p); }
  49   virtual void do_oop(narrowOop* p)               { do_oop_nv(p); }
  50 
  51   // This closure provides its own oop verification code.
  52   debug_only(virtual bool should_verify_oops()    { return false; })
  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 {




  30 #include "gc/parallel/psCompactionManager.hpp"
  31 #include "gc/parallel/psParallelCompact.inline.hpp"
  32 #include "gc/shared/taskqueue.inline.hpp"
  33 #include "oops/access.inline.hpp"
  34 #include "oops/arrayOop.inline.hpp"
  35 #include "oops/compressedOops.inline.hpp"
  36 #include "oops/objArrayOop.inline.hpp"
  37 #include "oops/oop.inline.hpp"
  38 #include "utilities/debug.hpp"
  39 #include "utilities/globalDefinitions.hpp"
  40 
  41 class PCMarkAndPushClosure: public OopClosure {
  42 private:
  43   ParCompactionManager* _compaction_manager;
  44 public:
  45   PCMarkAndPushClosure(ParCompactionManager* cm) : _compaction_manager(cm) { }
  46 
  47   template <typename T> void do_oop_nv(T* p)      { _compaction_manager->mark_and_push(p); }
  48   virtual void do_oop(oop* p)                     { do_oop_nv(p); }
  49   virtual void do_oop(narrowOop* p)               { do_oop_nv(p); }



  50 };
  51 
  52 class PCIterateMarkAndPushClosure: public MetadataVisitingOopIterateClosure {
  53 private:
  54   ParCompactionManager* _compaction_manager;
  55 public:
  56   PCIterateMarkAndPushClosure(ParCompactionManager* cm, ReferenceProcessor* rp) : MetadataVisitingOopIterateClosure(rp), _compaction_manager(cm) { }
  57 
  58   template <typename T> void do_oop_nv(T* p)      { _compaction_manager->mark_and_push(p); }
  59   virtual void do_oop(oop* p)                     { do_oop_nv(p); }
  60   virtual void do_oop(narrowOop* p)               { do_oop_nv(p); }
  61 
  62   void do_klass_nv(Klass* k)                      { _compaction_manager->follow_klass(k); }
  63   void do_cld_nv(ClassLoaderData* cld)            { _compaction_manager->follow_class_loader(cld); }



  64 };
  65 
  66 inline bool ParCompactionManager::steal(int queue_num, oop& t) {
  67   return stack_array()->steal(queue_num, t);
  68 }
  69 
  70 inline bool ParCompactionManager::steal_objarray(int queue_num, ObjArrayTask& t) {
  71   return _objarray_queues->steal(queue_num, t);
  72 }
  73 
  74 inline bool ParCompactionManager::steal(int queue_num, size_t& region) {
  75   return region_array()->steal(queue_num, region);
  76 }
  77 
  78 inline void ParCompactionManager::push(oop obj) {
  79   _marking_stack.push(obj);
  80 }
  81 
  82 void ParCompactionManager::push_objarray(oop obj, size_t index)
  83 {


< prev index next >