< prev index next >

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

Print this page




 158 
 159   // Access function for compaction managers
 160   static ParCompactionManager* gc_thread_compaction_manager(uint index);
 161 
 162   static bool steal(int queue_num, int* seed, oop& t);
 163   static bool steal_objarray(int queue_num, int* seed, ObjArrayTask& t);
 164   static bool steal(int queue_num, int* seed, size_t& region);
 165 
 166   // Process tasks remaining on any marking stack
 167   void follow_marking_stacks();
 168   inline bool marking_stacks_empty() const;
 169 
 170   // Process tasks remaining on any stack
 171   void drain_region_stacks();
 172 
 173   void follow_contents(oop obj);
 174   void follow_contents(objArrayOop array, int index);
 175 
 176   void update_contents(oop obj);
 177 
 178   class MarkAndPushClosure: public ExtendedOopClosure {
 179    private:
 180     ParCompactionManager* _compaction_manager;
 181    public:
 182     MarkAndPushClosure(ParCompactionManager* cm) : _compaction_manager(cm) { }
 183 
 184     template <typename T> void do_oop_nv(T* p);
 185     virtual void do_oop(oop* p);
 186     virtual void do_oop(narrowOop* p);
 187 
 188     // This closure provides its own oop verification code.
 189     debug_only(virtual bool should_verify_oops() { return false; })
 190   };
 191 
 192   class FollowStackClosure: public VoidClosure {
 193    private:
 194     ParCompactionManager* _compaction_manager;
 195    public:
 196     FollowStackClosure(ParCompactionManager* cm) : _compaction_manager(cm) { }
 197     virtual void do_void();
 198   };
 199 };
 200 
 201 inline ParCompactionManager* ParCompactionManager::manager_array(uint index) {
 202   assert(_manager_array != NULL, "access of NULL manager_array");
 203   assert(index <= ParallelGCThreads, "out of range manager_array access");
 204   return _manager_array[index];


 158 
 159   // Access function for compaction managers
 160   static ParCompactionManager* gc_thread_compaction_manager(uint index);
 161 
 162   static bool steal(int queue_num, int* seed, oop& t);
 163   static bool steal_objarray(int queue_num, int* seed, ObjArrayTask& t);
 164   static bool steal(int queue_num, int* seed, size_t& region);
 165 
 166   // Process tasks remaining on any marking stack
 167   void follow_marking_stacks();
 168   inline bool marking_stacks_empty() const;
 169 
 170   // Process tasks remaining on any stack
 171   void drain_region_stacks();
 172 
 173   void follow_contents(oop obj);
 174   void follow_contents(objArrayOop array, int index);
 175 
 176   void update_contents(oop obj);
 177 
 178   class MarkAndPushClosure: public BasicOopIterateClosure {
 179    private:
 180     ParCompactionManager* _compaction_manager;
 181    public:
 182     MarkAndPushClosure(ParCompactionManager* cm) : _compaction_manager(cm) { }
 183 
 184     template <typename T> void do_oop_work(T* p);
 185     virtual void do_oop(oop* p);
 186     virtual void do_oop(narrowOop* p);
 187 
 188     // This closure provides its own oop verification code.
 189     debug_only(virtual bool should_verify_oops() { return false; })
 190   };
 191 
 192   class FollowStackClosure: public VoidClosure {
 193    private:
 194     ParCompactionManager* _compaction_manager;
 195    public:
 196     FollowStackClosure(ParCompactionManager* cm) : _compaction_manager(cm) { }
 197     virtual void do_void();
 198   };
 199 };
 200 
 201 inline ParCompactionManager* ParCompactionManager::manager_array(uint index) {
 202   assert(_manager_array != NULL, "access of NULL manager_array");
 203   assert(index <= ParallelGCThreads, "out of range manager_array access");
 204   return _manager_array[index];
< prev index next >