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