741 HeapRegion* head = _g1->young_list()->first_region(); 742 return 743 verify_young_ages(head, _short_lived_surv_rate_group); 744 // also call verify_young_ages on any additional surv rate groups 745 } 746 747 bool 748 G1CollectorPolicy::verify_young_ages(HeapRegion* head, 749 SurvRateGroup *surv_rate_group) { 750 guarantee( surv_rate_group != NULL, "pre-condition" ); 751 752 const char* name = surv_rate_group->name(); 753 bool ret = true; 754 int prev_age = -1; 755 756 for (HeapRegion* curr = head; 757 curr != NULL; 758 curr = curr->get_next_young_region()) { 759 SurvRateGroup* group = curr->surv_rate_group(); 760 if (group == NULL && !curr->is_survivor()) { 761 log_info(gc, verify)("## %s: encountered NULL surv_rate_group", name); 762 ret = false; 763 } 764 765 if (surv_rate_group == group) { 766 int age = curr->age_in_surv_rate_group(); 767 768 if (age < 0) { 769 log_info(gc, verify)("## %s: encountered negative age", name); 770 ret = false; 771 } 772 773 if (age <= prev_age) { 774 log_info(gc, verify)("## %s: region ages are not strictly increasing (%d, %d)", name, age, prev_age); 775 ret = false; 776 } 777 prev_age = age; 778 } 779 } 780 781 return ret; 782 } 783 #endif // PRODUCT 784 785 void G1CollectorPolicy::record_full_collection_start() { 786 _full_collection_start_sec = os::elapsedTime(); 787 // Release the future to-space so that it is available for compaction into. 788 collector_state()->set_full_collection(true); 789 } 790 791 void G1CollectorPolicy::record_full_collection_end() { 792 // Consider this like a collection pause for the purposes of allocation 793 // since last pause. 794 double end_sec = os::elapsedTime(); | 741 HeapRegion* head = _g1->young_list()->first_region(); 742 return 743 verify_young_ages(head, _short_lived_surv_rate_group); 744 // also call verify_young_ages on any additional surv rate groups 745 } 746 747 bool 748 G1CollectorPolicy::verify_young_ages(HeapRegion* head, 749 SurvRateGroup *surv_rate_group) { 750 guarantee( surv_rate_group != NULL, "pre-condition" ); 751 752 const char* name = surv_rate_group->name(); 753 bool ret = true; 754 int prev_age = -1; 755 756 for (HeapRegion* curr = head; 757 curr != NULL; 758 curr = curr->get_next_young_region()) { 759 SurvRateGroup* group = curr->surv_rate_group(); 760 if (group == NULL && !curr->is_survivor()) { 761 log_error(gc, verify)("## %s: encountered NULL surv_rate_group", name); 762 ret = false; 763 } 764 765 if (surv_rate_group == group) { 766 int age = curr->age_in_surv_rate_group(); 767 768 if (age < 0) { 769 log_error(gc, verify)("## %s: encountered negative age", name); 770 ret = false; 771 } 772 773 if (age <= prev_age) { 774 log_error(gc, verify)("## %s: region ages are not strictly increasing (%d, %d)", name, age, prev_age); 775 ret = false; 776 } 777 prev_age = age; 778 } 779 } 780 781 return ret; 782 } 783 #endif // PRODUCT 784 785 void G1CollectorPolicy::record_full_collection_start() { 786 _full_collection_start_sec = os::elapsedTime(); 787 // Release the future to-space so that it is available for compaction into. 788 collector_state()->set_full_collection(true); 789 } 790 791 void G1CollectorPolicy::record_full_collection_end() { 792 // Consider this like a collection pause for the purposes of allocation 793 // since last pause. 794 double end_sec = os::elapsedTime(); |