203 void resize_all_tlabs(); 204 205 bool supports_tlab_allocation() const { return true; } 206 207 size_t tlab_capacity(Thread* thr) const; 208 size_t tlab_used(Thread* thr) const; 209 size_t unsafe_max_tlab_alloc(Thread* thr) const; 210 211 void object_iterate(ObjectClosure* cl); 212 213 HeapWord* block_start(const void* addr) const; 214 bool block_is_obj(const HeapWord* addr) const; 215 216 jlong millis_since_last_gc(); 217 218 void prepare_for_verify(); 219 PSHeapSummary create_ps_heap_summary(); 220 virtual void print_on(outputStream* st) const; 221 virtual void print_on_error(outputStream* st) const; 222 virtual void gc_threads_do(ThreadClosure* tc) const; 223 virtual void print_tracing_info() const; 224 225 virtual WorkGang* get_safepoint_workers() { return &_workers; } 226 227 PreGenGCValues get_pre_gc_values() const; 228 void print_heap_change(const PreGenGCValues& pre_gc_values) const; 229 230 // Used to print information about locations in the hs_err file. 231 virtual bool print_location(outputStream* st, void* addr) const; 232 233 void verify(VerifyOption option /* ignored */); 234 235 // Resize the young generation. The reserved space for the 236 // generation may be expanded in preparation for the resize. 237 void resize_young_gen(size_t eden_size, size_t survivor_size); 238 239 // Resize the old generation. The reserved space for the 240 // generation may be expanded in preparation for the resize. 241 void resize_old_gen(size_t desired_free_space); 242 243 // Save the tops of the spaces in all generations 244 void record_gen_tops_before_GC() PRODUCT_RETURN; 245 246 // Mangle the unused parts of all spaces in the heap 247 void gen_mangle_unused_area() PRODUCT_RETURN; 248 249 // Call these in sequential code around the processing of strong roots. 250 class ParStrongRootsScope : public MarkScope { 251 public: 252 ParStrongRootsScope(); 253 ~ParStrongRootsScope(); 254 }; 255 256 GCMemoryManager* old_gc_manager() const { return _old_manager; } 257 GCMemoryManager* young_gc_manager() const { return _young_manager; } 258 259 WorkGang& workers() { 260 return _workers; 261 } 262 263 // Runs the given AbstractGangTask with the current active workers. 264 virtual void run_task(AbstractGangTask* task); 265 }; 266 267 // Class that can be used to print information about the 268 // adaptive size policy at intervals specified by 269 // AdaptiveSizePolicyOutputInterval. Only print information 270 // if an adaptive size policy is in use. 271 class AdaptiveSizePolicyOutput : AllStatic { 272 static bool enabled() { 273 return UseParallelGC && 274 UseAdaptiveSizePolicy && 275 log_is_enabled(Debug, gc, ergo); 276 } 277 public: 278 static void print() { 279 if (enabled()) { 280 ParallelScavengeHeap::heap()->size_policy()->print(); 281 } 282 } 283 284 static void print(AdaptiveSizePolicy* size_policy, uint count) { | 203 void resize_all_tlabs(); 204 205 bool supports_tlab_allocation() const { return true; } 206 207 size_t tlab_capacity(Thread* thr) const; 208 size_t tlab_used(Thread* thr) const; 209 size_t unsafe_max_tlab_alloc(Thread* thr) const; 210 211 void object_iterate(ObjectClosure* cl); 212 213 HeapWord* block_start(const void* addr) const; 214 bool block_is_obj(const HeapWord* addr) const; 215 216 jlong millis_since_last_gc(); 217 218 void prepare_for_verify(); 219 PSHeapSummary create_ps_heap_summary(); 220 virtual void print_on(outputStream* st) const; 221 virtual void print_on_error(outputStream* st) const; 222 virtual void gc_threads_do(ThreadClosure* tc) const; 223 // Runs the given AbstractGangTask with the current active workers. 224 virtual void run_task(AbstractGangTask* task); 225 virtual void print_tracing_info() const; 226 227 virtual WorkGang* get_safepoint_workers() { return &_workers; } 228 229 PreGenGCValues get_pre_gc_values() const; 230 void print_heap_change(const PreGenGCValues& pre_gc_values) const; 231 232 // Used to print information about locations in the hs_err file. 233 virtual bool print_location(outputStream* st, void* addr) const; 234 235 void verify(VerifyOption option /* ignored */); 236 237 // Resize the young generation. The reserved space for the 238 // generation may be expanded in preparation for the resize. 239 void resize_young_gen(size_t eden_size, size_t survivor_size); 240 241 // Resize the old generation. The reserved space for the 242 // generation may be expanded in preparation for the resize. 243 void resize_old_gen(size_t desired_free_space); 244 245 // Save the tops of the spaces in all generations 246 void record_gen_tops_before_GC() PRODUCT_RETURN; 247 248 // Mangle the unused parts of all spaces in the heap 249 void gen_mangle_unused_area() PRODUCT_RETURN; 250 251 // Call these in sequential code around the processing of strong roots. 252 class ParStrongRootsScope : public MarkScope { 253 public: 254 ParStrongRootsScope(); 255 ~ParStrongRootsScope(); 256 }; 257 258 GCMemoryManager* old_gc_manager() const { return _old_manager; } 259 GCMemoryManager* young_gc_manager() const { return _young_manager; } 260 261 WorkGang& workers() { 262 return _workers; 263 } 264 }; 265 266 // Class that can be used to print information about the 267 // adaptive size policy at intervals specified by 268 // AdaptiveSizePolicyOutputInterval. Only print information 269 // if an adaptive size policy is in use. 270 class AdaptiveSizePolicyOutput : AllStatic { 271 static bool enabled() { 272 return UseParallelGC && 273 UseAdaptiveSizePolicy && 274 log_is_enabled(Debug, gc, ergo); 275 } 276 public: 277 static void print() { 278 if (enabled()) { 279 ParallelScavengeHeap::heap()->size_policy()->print(); 280 } 281 } 282 283 static void print(AdaptiveSizePolicy* size_policy, uint count) { |