< prev index next >

src/hotspot/share/gc/parallel/psScavenge.cpp

Print this page




 428       }
 429 
 430       _gc_tracer.report_gc_reference_stats(stats);
 431       pt.print_all_references();
 432 
 433       // Enqueue reference objects discovered during scavenge.
 434       if (reference_processor()->processing_is_mt()) {
 435         PSRefProcTaskExecutor task_executor;
 436         reference_processor()->enqueue_discovered_references(&task_executor, &pt);
 437       } else {
 438         reference_processor()->enqueue_discovered_references(NULL, &pt);
 439       }
 440 
 441       pt.print_enqueue_phase();
 442     }
 443 
 444     PSScavengeRootsClosure root_closure(promotion_manager);
 445 
 446     {
 447       GCTraceTime(Debug, gc, phases) tm("Weak Processing", &_gc_timer);
 448       WeakProcessor::unlink_or_oops_do(&_is_alive_closure, &root_closure);
 449     }
 450 
 451     {
 452       GCTraceTime(Debug, gc, phases) tm("Scrub String Table", &_gc_timer);
 453       // Unlink any dead interned Strings and process the remaining live ones.
 454       StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure);
 455     }
 456 
 457     // Finally, flush the promotion_manager's labs, and deallocate its stacks.
 458     promotion_failure_occurred = PSPromotionManager::post_scavenge(_gc_tracer);
 459     if (promotion_failure_occurred) {
 460       clean_up_failed_promotion();
 461       log_info(gc, promotion)("Promotion failed");
 462     }
 463 
 464     _gc_tracer.report_tenuring_threshold(tenuring_threshold());
 465 
 466     // Let the size policy know we're done.  Note that we count promotion
 467     // failure cleanup time as part of the collection (otherwise, we're
 468     // implicitly saying it's mutator time).




 428       }
 429 
 430       _gc_tracer.report_gc_reference_stats(stats);
 431       pt.print_all_references();
 432 
 433       // Enqueue reference objects discovered during scavenge.
 434       if (reference_processor()->processing_is_mt()) {
 435         PSRefProcTaskExecutor task_executor;
 436         reference_processor()->enqueue_discovered_references(&task_executor, &pt);
 437       } else {
 438         reference_processor()->enqueue_discovered_references(NULL, &pt);
 439       }
 440 
 441       pt.print_enqueue_phase();
 442     }
 443 
 444     PSScavengeRootsClosure root_closure(promotion_manager);
 445 
 446     {
 447       GCTraceTime(Debug, gc, phases) tm("Weak Processing", &_gc_timer);
 448       WeakProcessor::weak_oops_do(&_is_alive_closure, &root_closure);
 449     }
 450 
 451     {
 452       GCTraceTime(Debug, gc, phases) tm("Scrub String Table", &_gc_timer);
 453       // Unlink any dead interned Strings and process the remaining live ones.
 454       StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure);
 455     }
 456 
 457     // Finally, flush the promotion_manager's labs, and deallocate its stacks.
 458     promotion_failure_occurred = PSPromotionManager::post_scavenge(_gc_tracer);
 459     if (promotion_failure_occurred) {
 460       clean_up_failed_promotion();
 461       log_info(gc, promotion)("Promotion failed");
 462     }
 463 
 464     _gc_tracer.report_tenuring_threshold(tenuring_threshold());
 465 
 466     // Let the size policy know we're done.  Note that we count promotion
 467     // failure cleanup time as part of the collection (otherwise, we're
 468     // implicitly saying it's mutator time).


< prev index next >