< prev index next >

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

Print this page




 722   update_time_of_last_gc(now);
 723 
 724   gch->trace_heap_after_gc(&gc_tracer);
 725 
 726   _gc_timer->register_gc_end();
 727 
 728   gc_tracer.report_gc_end(_gc_timer->gc_end(), _gc_timer->time_partitions());
 729 }
 730 
 731 void DefNewGeneration::init_assuming_no_promotion_failure() {
 732   _promotion_failed = false;
 733   _promotion_failed_info.reset();
 734   from()->set_next_compaction_space(NULL);
 735 }
 736 
 737 void DefNewGeneration::remove_forwarding_pointers() {
 738   RemoveForwardedPointerClosure rspc;
 739   eden()->object_iterate(&rspc);
 740   from()->object_iterate(&rspc);
 741 
 742   _preserved_marks_set.restore(GenCollectedHeap::heap()->workers());

 743 }
 744 
 745 void DefNewGeneration::handle_promotion_failure(oop old) {
 746   log_debug(gc, promotion)("Promotion failure size = %d) ", old->size());
 747 
 748   _promotion_failed = true;
 749   _promotion_failed_info.register_copy_failure(old->size());
 750   _preserved_marks_set.get()->push_if_necessary(old, old->mark());
 751   // forward to self
 752   old->forward_to(old);
 753 
 754   _promo_failure_scan_stack.push(old);
 755 
 756   if (!_promo_failure_drain_in_progress) {
 757     // prevent recursion in copy_to_survivor_space()
 758     _promo_failure_drain_in_progress = true;
 759     drain_promo_failure_scan_stack();
 760     _promo_failure_drain_in_progress = false;
 761   }
 762 }




 722   update_time_of_last_gc(now);
 723 
 724   gch->trace_heap_after_gc(&gc_tracer);
 725 
 726   _gc_timer->register_gc_end();
 727 
 728   gc_tracer.report_gc_end(_gc_timer->gc_end(), _gc_timer->time_partitions());
 729 }
 730 
 731 void DefNewGeneration::init_assuming_no_promotion_failure() {
 732   _promotion_failed = false;
 733   _promotion_failed_info.reset();
 734   from()->set_next_compaction_space(NULL);
 735 }
 736 
 737 void DefNewGeneration::remove_forwarding_pointers() {
 738   RemoveForwardedPointerClosure rspc;
 739   eden()->object_iterate(&rspc);
 740   from()->object_iterate(&rspc);
 741 
 742   SharedPreservedMarksTaskExecutor task_executor(GenCollectedHeap::heap()->workers());
 743   _preserved_marks_set.restore(&task_executor);
 744 }
 745 
 746 void DefNewGeneration::handle_promotion_failure(oop old) {
 747   log_debug(gc, promotion)("Promotion failure size = %d) ", old->size());
 748 
 749   _promotion_failed = true;
 750   _promotion_failed_info.register_copy_failure(old->size());
 751   _preserved_marks_set.get()->push_if_necessary(old, old->mark());
 752   // forward to self
 753   old->forward_to(old);
 754 
 755   _promo_failure_scan_stack.push(old);
 756 
 757   if (!_promo_failure_drain_in_progress) {
 758     // prevent recursion in copy_to_survivor_space()
 759     _promo_failure_drain_in_progress = true;
 760     drain_promo_failure_scan_stack();
 761     _promo_failure_drain_in_progress = false;
 762   }
 763 }


< prev index next >