957 958 private: 959 static STWGCTimer _gc_timer; 960 static ParallelOldTracer _gc_tracer; 961 static elapsedTimer _accumulated_time; 962 static unsigned int _total_invocations; 963 static unsigned int _maximum_compaction_gc_num; 964 static jlong _time_of_last_gc; // ms 965 static CollectorCounters* _counters; 966 static ParMarkBitMap _mark_bitmap; 967 static ParallelCompactData _summary_data; 968 static IsAliveClosure _is_alive_closure; 969 static SpaceInfo _space_info[last_space_id]; 970 static bool _print_phases; 971 static AdjustPointerClosure _adjust_pointer_closure; 972 static AdjustKlassClosure _adjust_klass_closure; 973 974 // Reference processing (used in ...follow_contents) 975 static ReferenceProcessor* _ref_processor; 976 977 // Updated location of intArrayKlassObj. 978 static Klass* _updated_int_array_klass_obj; 979 980 // Values computed at initialization and used by dead_wood_limiter(). 981 static double _dwl_mean; 982 static double _dwl_std_dev; 983 static double _dwl_first_term; 984 static double _dwl_adjustment; 985 #ifdef ASSERT 986 static bool _dwl_initialized; 987 #endif // #ifdef ASSERT 988 989 990 public: 991 static ParallelOldTracer* gc_tracer() { return &_gc_tracer; } 992 993 private: 994 995 static void initialize_space_info(); 996 997 // Return true if details about individual phases should be printed. 998 static inline bool print_phases(); 999 1132 // Perform initialization for PSParallelCompact that requires 1133 // allocations. This should be called during the VM initialization 1134 // at a pointer where it would be appropriate to return a JNI_ENOMEM 1135 // in the event of a failure. 1136 static bool initialize(); 1137 1138 // Closure accessors 1139 static PSParallelCompact::AdjustPointerClosure* adjust_pointer_closure() { 1140 return &_adjust_pointer_closure; 1141 } 1142 static KlassClosure* adjust_klass_closure() { return (KlassClosure*)&_adjust_klass_closure; } 1143 static BoolObjectClosure* is_alive_closure() { return (BoolObjectClosure*)&_is_alive_closure; } 1144 1145 // Public accessors 1146 static elapsedTimer* accumulated_time() { return &_accumulated_time; } 1147 static unsigned int total_invocations() { return _total_invocations; } 1148 static CollectorCounters* counters() { return _counters; } 1149 1150 // Used to add tasks 1151 static GCTaskManager* const gc_task_manager(); 1152 static Klass* updated_int_array_klass_obj() { 1153 return _updated_int_array_klass_obj; 1154 } 1155 1156 // Marking support 1157 static inline bool mark_obj(oop obj); 1158 static inline bool is_marked(oop obj); 1159 1160 template <class T> static inline void adjust_pointer(T* p); 1161 1162 static void follow_class_loader(ParCompactionManager* cm, 1163 ClassLoaderData* klass); 1164 1165 // Compaction support. 1166 // Return true if p is in the range [beg_addr, end_addr). 1167 static inline bool is_in(HeapWord* p, HeapWord* beg_addr, HeapWord* end_addr); 1168 static inline bool is_in(oop* p, HeapWord* beg_addr, HeapWord* end_addr); 1169 1170 // Convenience wrappers for per-space data kept in _space_info. 1171 static inline MutableSpace* space(SpaceId space_id); 1172 static inline HeapWord* new_top(SpaceId space_id); 1173 static inline HeapWord* dense_prefix(SpaceId space_id); 1174 static inline ObjectStartArray* start_array(SpaceId space_id); | 957 958 private: 959 static STWGCTimer _gc_timer; 960 static ParallelOldTracer _gc_tracer; 961 static elapsedTimer _accumulated_time; 962 static unsigned int _total_invocations; 963 static unsigned int _maximum_compaction_gc_num; 964 static jlong _time_of_last_gc; // ms 965 static CollectorCounters* _counters; 966 static ParMarkBitMap _mark_bitmap; 967 static ParallelCompactData _summary_data; 968 static IsAliveClosure _is_alive_closure; 969 static SpaceInfo _space_info[last_space_id]; 970 static bool _print_phases; 971 static AdjustPointerClosure _adjust_pointer_closure; 972 static AdjustKlassClosure _adjust_klass_closure; 973 974 // Reference processing (used in ...follow_contents) 975 static ReferenceProcessor* _ref_processor; 976 977 // Values computed at initialization and used by dead_wood_limiter(). 978 static double _dwl_mean; 979 static double _dwl_std_dev; 980 static double _dwl_first_term; 981 static double _dwl_adjustment; 982 #ifdef ASSERT 983 static bool _dwl_initialized; 984 #endif // #ifdef ASSERT 985 986 987 public: 988 static ParallelOldTracer* gc_tracer() { return &_gc_tracer; } 989 990 private: 991 992 static void initialize_space_info(); 993 994 // Return true if details about individual phases should be printed. 995 static inline bool print_phases(); 996 1129 // Perform initialization for PSParallelCompact that requires 1130 // allocations. This should be called during the VM initialization 1131 // at a pointer where it would be appropriate to return a JNI_ENOMEM 1132 // in the event of a failure. 1133 static bool initialize(); 1134 1135 // Closure accessors 1136 static PSParallelCompact::AdjustPointerClosure* adjust_pointer_closure() { 1137 return &_adjust_pointer_closure; 1138 } 1139 static KlassClosure* adjust_klass_closure() { return (KlassClosure*)&_adjust_klass_closure; } 1140 static BoolObjectClosure* is_alive_closure() { return (BoolObjectClosure*)&_is_alive_closure; } 1141 1142 // Public accessors 1143 static elapsedTimer* accumulated_time() { return &_accumulated_time; } 1144 static unsigned int total_invocations() { return _total_invocations; } 1145 static CollectorCounters* counters() { return _counters; } 1146 1147 // Used to add tasks 1148 static GCTaskManager* const gc_task_manager(); 1149 1150 // Marking support 1151 static inline bool mark_obj(oop obj); 1152 static inline bool is_marked(oop obj); 1153 1154 template <class T> static inline void adjust_pointer(T* p); 1155 1156 static void follow_class_loader(ParCompactionManager* cm, 1157 ClassLoaderData* klass); 1158 1159 // Compaction support. 1160 // Return true if p is in the range [beg_addr, end_addr). 1161 static inline bool is_in(HeapWord* p, HeapWord* beg_addr, HeapWord* end_addr); 1162 static inline bool is_in(oop* p, HeapWord* beg_addr, HeapWord* end_addr); 1163 1164 // Convenience wrappers for per-space data kept in _space_info. 1165 static inline MutableSpace* space(SpaceId space_id); 1166 static inline HeapWord* new_top(SpaceId space_id); 1167 static inline HeapWord* dense_prefix(SpaceId space_id); 1168 static inline ObjectStartArray* start_array(SpaceId space_id); |