< prev index next >

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

Print this page
rev 49289 : 8199735: Mark word updates need to use Access API


 736   from()->set_next_compaction_space(NULL);
 737 }
 738 
 739 void DefNewGeneration::remove_forwarding_pointers() {
 740   RemoveForwardedPointerClosure rspc;
 741   eden()->object_iterate(&rspc);
 742   from()->object_iterate(&rspc);
 743   restore_preserved_marks();
 744 }
 745 
 746 void DefNewGeneration::restore_preserved_marks() {
 747   SharedRestorePreservedMarksTaskExecutor task_executor(NULL);
 748   _preserved_marks_set.restore(&task_executor);
 749 }
 750 
 751 void DefNewGeneration::handle_promotion_failure(oop old) {
 752   log_debug(gc, promotion)("Promotion failure size = %d) ", old->size());
 753 
 754   _promotion_failed = true;
 755   _promotion_failed_info.register_copy_failure(old->size());
 756   _preserved_marks_set.get()->push_if_necessary(old, old->mark());
 757   // forward to self
 758   old->forward_to(old);
 759 
 760   _promo_failure_scan_stack.push(old);
 761 
 762   if (!_promo_failure_drain_in_progress) {
 763     // prevent recursion in copy_to_survivor_space()
 764     _promo_failure_drain_in_progress = true;
 765     drain_promo_failure_scan_stack();
 766     _promo_failure_drain_in_progress = false;
 767   }
 768 }
 769 
 770 oop DefNewGeneration::copy_to_survivor_space(oop old) {
 771   assert(is_in_reserved(old) && !old->is_forwarded(),
 772          "shouldn't be scavenging this oop");
 773   size_t s = old->size();
 774   oop obj = NULL;
 775 
 776   // Try allocating obj in to-space (unless too old)




 736   from()->set_next_compaction_space(NULL);
 737 }
 738 
 739 void DefNewGeneration::remove_forwarding_pointers() {
 740   RemoveForwardedPointerClosure rspc;
 741   eden()->object_iterate(&rspc);
 742   from()->object_iterate(&rspc);
 743   restore_preserved_marks();
 744 }
 745 
 746 void DefNewGeneration::restore_preserved_marks() {
 747   SharedRestorePreservedMarksTaskExecutor task_executor(NULL);
 748   _preserved_marks_set.restore(&task_executor);
 749 }
 750 
 751 void DefNewGeneration::handle_promotion_failure(oop old) {
 752   log_debug(gc, promotion)("Promotion failure size = %d) ", old->size());
 753 
 754   _promotion_failed = true;
 755   _promotion_failed_info.register_copy_failure(old->size());
 756   _preserved_marks_set.get()->push_if_necessary(old, old->mark_raw());
 757   // forward to self
 758   old->forward_to(old);
 759 
 760   _promo_failure_scan_stack.push(old);
 761 
 762   if (!_promo_failure_drain_in_progress) {
 763     // prevent recursion in copy_to_survivor_space()
 764     _promo_failure_drain_in_progress = true;
 765     drain_promo_failure_scan_stack();
 766     _promo_failure_drain_in_progress = false;
 767   }
 768 }
 769 
 770 oop DefNewGeneration::copy_to_survivor_space(oop old) {
 771   assert(is_in_reserved(old) && !old->is_forwarded(),
 772          "shouldn't be scavenging this oop");
 773   size_t s = old->size();
 774   oop obj = NULL;
 775 
 776   // Try allocating obj in to-space (unless too old)


< prev index next >