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).
|