241 242 // Save the tops of the spaces in all generations 243 void record_gen_tops_before_GC() PRODUCT_RETURN; 244 245 // Mangle the unused parts of all spaces in the heap 246 void gen_mangle_unused_area() PRODUCT_RETURN; 247 248 // Call these in sequential code around the processing of strong roots. 249 class ParStrongRootsScope : public MarkScope { 250 public: 251 ParStrongRootsScope(); 252 ~ParStrongRootsScope(); 253 }; 254 255 GCMemoryManager* old_gc_manager() const { return _old_manager; } 256 GCMemoryManager* young_gc_manager() const { return _young_manager; } 257 258 WorkGang& workers() { 259 return _workers; 260 } 261 }; 262 263 // Class that can be used to print information about the 264 // adaptive size policy at intervals specified by 265 // AdaptiveSizePolicyOutputInterval. Only print information 266 // if an adaptive size policy is in use. 267 class AdaptiveSizePolicyOutput : AllStatic { 268 static bool enabled() { 269 return UseParallelGC && 270 UseAdaptiveSizePolicy && 271 log_is_enabled(Debug, gc, ergo); 272 } 273 public: 274 static void print() { 275 if (enabled()) { 276 ParallelScavengeHeap::heap()->size_policy()->print(); 277 } 278 } 279 280 static void print(AdaptiveSizePolicy* size_policy, uint count) { | 241 242 // Save the tops of the spaces in all generations 243 void record_gen_tops_before_GC() PRODUCT_RETURN; 244 245 // Mangle the unused parts of all spaces in the heap 246 void gen_mangle_unused_area() PRODUCT_RETURN; 247 248 // Call these in sequential code around the processing of strong roots. 249 class ParStrongRootsScope : public MarkScope { 250 public: 251 ParStrongRootsScope(); 252 ~ParStrongRootsScope(); 253 }; 254 255 GCMemoryManager* old_gc_manager() const { return _old_manager; } 256 GCMemoryManager* young_gc_manager() const { return _young_manager; } 257 258 WorkGang& workers() { 259 return _workers; 260 } 261 262 // Runs the given AbstractGangTask with the current active workers, returning the 263 // total time taken. 264 virtual Tickspan 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) { |