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