--- old/src/hotspot/share/gc/g1/heapRegion.inline.hpp 2019-12-04 15:39:04.838689600 +0100 +++ new/src/hotspot/share/gc/g1/heapRegion.inline.hpp 2019-12-04 15:39:04.602687801 +0100 @@ -393,7 +393,7 @@ inline void HeapRegion::install_surv_rate_group(G1SurvRateGroup* surv_rate_group) { assert(surv_rate_group != NULL, "pre-condition"); assert(!has_surv_rate_group(), "pre-condition"); - assert(is_young(), "pre-condition"); + assert(is_eden(), "pre-condition"); _surv_rate_group = surv_rate_group; _age_index = surv_rate_group->next_age_index(); @@ -402,7 +402,7 @@ inline void HeapRegion::uninstall_surv_rate_group() { if (has_surv_rate_group()) { assert(has_valid_age_in_surv_rate(), "pre-condition"); - assert(is_young(), "pre-condition"); + assert(is_eden(), "pre-condition"); _surv_rate_group = NULL; _age_index = G1SurvRateGroup::InvalidAgeIndex; @@ -415,7 +415,12 @@ assert(has_surv_rate_group(), "pre-condition"); assert(has_valid_age_in_surv_rate(), "pre-condition"); int age_in_group = age_in_surv_rate_group(); - _surv_rate_group->record_surviving_words(age_in_group, words_survived); + assert(used() >= _survivor_bytes, "should not be"); + double surv_rate = (double)(words_survived * HeapWordSize) / (used() - _survivor_bytes); + if (UseNewCode) + log_debug(gc)("region %u type %s rate %1.2f survived " SIZE_FORMAT " used " SIZE_FORMAT " survivor_bytes " SIZE_FORMAT, + hrm_index(), get_short_type_str(), surv_rate, words_survived * HeapWordSize, used(), _survivor_bytes); + _surv_rate_group->record_surviving_words(age_in_group, surv_rate); } #endif // SHARE_GC_G1_HEAPREGION_INLINE_HPP