< prev index next >

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

8211447: Replace oop_pc_update_pointers with oop_iterate and closure

916 class PSParallelCompact : AllStatic {                                                                                      
917  public:                                                                                                                   
918   // Convenient access to type names.                                                                                      
919   typedef ParMarkBitMap::idx_t idx_t;                                                                                      
920   typedef ParallelCompactData::RegionData RegionData;                                                                      
921   typedef ParallelCompactData::BlockData BlockData;                                                                        
922 
923   typedef enum {                                                                                                           
924     old_space_id, eden_space_id,                                                                                           
925     from_space_id, to_space_id, last_space_id                                                                              
926   } SpaceId;                                                                                                               
927 
928  public:                                                                                                                   
929   // Inline closure decls                                                                                                  
930   //                                                                                                                       
931   class IsAliveClosure: public BoolObjectClosure {                                                                         
932    public:                                                                                                                 
933     virtual bool do_object_b(oop p);                                                                                       
934   };                                                                                                                       
935 
936   class AdjustPointerClosure: public BasicOopIterateClosure {                                                              
937    public:                                                                                                                 
938     AdjustPointerClosure(ParCompactionManager* cm) {                                                                       
939       assert(cm != NULL, "associate ParCompactionManage should not be NULL");                                              
940       _cm = cm;                                                                                                            
941     }                                                                                                                      
942     template <typename T> void do_oop_work(T* p);                                                                          
943     virtual void do_oop(oop* p);                                                                                           
944     virtual void do_oop(narrowOop* p);                                                                                     
945                                                                                                                            
946     // This closure provides its own oop verification code.                                                                
947     debug_only(virtual bool should_verify_oops() { return false; })                                                        
948    private:                                                                                                                
949     ParCompactionManager* _cm;                                                                                             
950   };                                                                                                                       
951                                                                                                                            
952   friend class AdjustPointerClosure;                                                                                       
953   friend class RefProcTaskProxy;                                                                                           
954   friend class PSParallelCompactTest;                                                                                      
955 
956  private:                                                                                                                  
957   static STWGCTimer           _gc_timer;                                                                                   
958   static ParallelOldTracer    _gc_tracer;                                                                                  
959   static elapsedTimer         _accumulated_time;                                                                           
960   static unsigned int         _total_invocations;                                                                          
961   static unsigned int         _maximum_compaction_gc_num;                                                                  
962   static jlong                _time_of_last_gc;   // ms                                                                    
963   static CollectorCounters*   _counters;                                                                                   
964   static ParMarkBitMap        _mark_bitmap;                                                                                
965   static ParallelCompactData  _summary_data;                                                                               
966   static IsAliveClosure       _is_alive_closure;                                                                           
967   static SpaceInfo            _space_info[last_space_id];                                                                  
968 
969   // Reference processing (used in ...follow_contents)                                                                     
970   static SpanSubjectToDiscoveryClosure  _span_based_discoverer;                                                            
971   static ReferenceProcessor*  _ref_processor;                                                                              

916 class PSParallelCompact : AllStatic {
917  public:
918   // Convenient access to type names.
919   typedef ParMarkBitMap::idx_t idx_t;
920   typedef ParallelCompactData::RegionData RegionData;
921   typedef ParallelCompactData::BlockData BlockData;
922 
923   typedef enum {
924     old_space_id, eden_space_id,
925     from_space_id, to_space_id, last_space_id
926   } SpaceId;
927 
928  public:
929   // Inline closure decls
930   //
931   class IsAliveClosure: public BoolObjectClosure {
932    public:
933     virtual bool do_object_b(oop p);
934   };
935 

















936   friend class RefProcTaskProxy;
937   friend class PSParallelCompactTest;
938 
939  private:
940   static STWGCTimer           _gc_timer;
941   static ParallelOldTracer    _gc_tracer;
942   static elapsedTimer         _accumulated_time;
943   static unsigned int         _total_invocations;
944   static unsigned int         _maximum_compaction_gc_num;
945   static jlong                _time_of_last_gc;   // ms
946   static CollectorCounters*   _counters;
947   static ParMarkBitMap        _mark_bitmap;
948   static ParallelCompactData  _summary_data;
949   static IsAliveClosure       _is_alive_closure;
950   static SpaceInfo            _space_info[last_space_id];
951 
952   // Reference processing (used in ...follow_contents)
953   static SpanSubjectToDiscoveryClosure  _span_based_discoverer;
954   static ReferenceProcessor*  _ref_processor;
< prev index next >