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;
|