577 GenCollectedHeap* gch = GenCollectedHeap::heap();
578
579 _gc_timer->register_gc_start();
580 DefNewTracer gc_tracer;
581 gc_tracer.report_gc_start(gch->gc_cause(), _gc_timer->gc_start());
582
583 _old_gen = gch->old_gen();
584
585 // If the next generation is too full to accommodate promotion
586 // from this generation, pass on collection; let the next generation
587 // do it.
588 if (!collection_attempt_is_safe()) {
589 log_trace(gc)(":: Collection attempt not safe ::");
590 gch->set_incremental_collection_failed(); // Slight lie: we did not even attempt one
591 return;
592 }
593 assert(to()->is_empty(), "Else not collection_attempt_is_safe");
594
595 init_assuming_no_promotion_failure();
596
597 GCTraceTime(Trace, gc) tm("DefNew", NULL, gch->gc_cause());
598
599 gch->trace_heap_before_gc(&gc_tracer);
600
601 // These can be shared for all code paths
602 IsAliveClosure is_alive(this);
603 ScanWeakRefClosure scan_weak_ref(this);
604
605 age_table()->clear();
606 to()->clear(SpaceDecorator::Mangle);
607 // The preserved marks should be empty at the start of the GC.
608 _preserved_marks_set.init(1);
609
610 gch->rem_set()->prepare_for_younger_refs_iterate(false);
611
612 assert(gch->no_allocs_since_save_marks(),
613 "save marks have not been newly set.");
614
615 // Not very pretty.
616 CollectorPolicy* cp = gch->collector_policy();
617
|
577 GenCollectedHeap* gch = GenCollectedHeap::heap();
578
579 _gc_timer->register_gc_start();
580 DefNewTracer gc_tracer;
581 gc_tracer.report_gc_start(gch->gc_cause(), _gc_timer->gc_start());
582
583 _old_gen = gch->old_gen();
584
585 // If the next generation is too full to accommodate promotion
586 // from this generation, pass on collection; let the next generation
587 // do it.
588 if (!collection_attempt_is_safe()) {
589 log_trace(gc)(":: Collection attempt not safe ::");
590 gch->set_incremental_collection_failed(); // Slight lie: we did not even attempt one
591 return;
592 }
593 assert(to()->is_empty(), "Else not collection_attempt_is_safe");
594
595 init_assuming_no_promotion_failure();
596
597 GCTraceTime(Trace, gc, phases) tm("DefNew", NULL, gch->gc_cause());
598
599 gch->trace_heap_before_gc(&gc_tracer);
600
601 // These can be shared for all code paths
602 IsAliveClosure is_alive(this);
603 ScanWeakRefClosure scan_weak_ref(this);
604
605 age_table()->clear();
606 to()->clear(SpaceDecorator::Mangle);
607 // The preserved marks should be empty at the start of the GC.
608 _preserved_marks_set.init(1);
609
610 gch->rem_set()->prepare_for_younger_refs_iterate(false);
611
612 assert(gch->no_allocs_since_save_marks(),
613 "save marks have not been newly set.");
614
615 // Not very pretty.
616 CollectorPolicy* cp = gch->collector_policy();
617
|