< prev index next >

src/share/vm/gc/serial/defNewGeneration.cpp

Print this page




 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 


< prev index next >