361 if (!obj->is_objArray() || (((HeapWord*)obj) >= start && cur <= end)) {
362 obj->oop_iterate(cl);
363 } else {
364 obj->oop_iterate(cl, mr);
365 is_precise = true;
366 }
367 }
368 if (cur >= end) {
369 return is_precise ? end : cur;
370 }
371 }
372 }
373
374 inline int HeapRegion::age_in_surv_rate_group() const {
375 assert(has_surv_rate_group(), "pre-condition");
376 assert(has_valid_age_in_surv_rate(), "pre-condition");
377 return _surv_rate_group->age_in_group(_age_index);
378 }
379
380 inline bool HeapRegion::has_valid_age_in_surv_rate() const {
381 return SurvRateGroup::is_valid_age_index(_age_index);
382 }
383
384 inline bool HeapRegion::has_surv_rate_group() const {
385 return _surv_rate_group != NULL;
386 }
387
388 inline double HeapRegion::surv_rate_prediction(G1Predictions const& predictor) const {
389 assert(has_surv_rate_group(), "pre-condition");
390 return _surv_rate_group->surv_rate_pred(predictor, age_in_surv_rate_group());
391 }
392
393 inline void HeapRegion::install_surv_rate_group(SurvRateGroup* surv_rate_group) {
394 assert(surv_rate_group != NULL, "pre-condition");
395 assert(!has_surv_rate_group(), "pre-condition");
396 assert(is_young(), "pre-condition");
397
398 _surv_rate_group = surv_rate_group;
399 _age_index = surv_rate_group->next_age_index();
400 }
401
402 inline void HeapRegion::uninstall_surv_rate_group() {
403 if (has_surv_rate_group()) {
404 assert(has_valid_age_in_surv_rate(), "pre-condition");
405 assert(is_young(), "pre-condition");
406
407 _surv_rate_group = NULL;
408 _age_index = SurvRateGroup::InvalidAgeIndex;
409 } else {
410 assert(!has_valid_age_in_surv_rate(), "pre-condition");
411 }
412 }
413
414 inline void HeapRegion::record_surv_words_in_group(size_t words_survived) {
415 assert(has_surv_rate_group(), "pre-condition");
416 assert(has_valid_age_in_surv_rate(), "pre-condition");
417 int age_in_group = age_in_surv_rate_group();
418 _surv_rate_group->record_surviving_words(age_in_group, words_survived);
419 }
420
421 #endif // SHARE_GC_G1_HEAPREGION_INLINE_HPP
|
361 if (!obj->is_objArray() || (((HeapWord*)obj) >= start && cur <= end)) {
362 obj->oop_iterate(cl);
363 } else {
364 obj->oop_iterate(cl, mr);
365 is_precise = true;
366 }
367 }
368 if (cur >= end) {
369 return is_precise ? end : cur;
370 }
371 }
372 }
373
374 inline int HeapRegion::age_in_surv_rate_group() const {
375 assert(has_surv_rate_group(), "pre-condition");
376 assert(has_valid_age_in_surv_rate(), "pre-condition");
377 return _surv_rate_group->age_in_group(_age_index);
378 }
379
380 inline bool HeapRegion::has_valid_age_in_surv_rate() const {
381 return G1SurvRateGroup::is_valid_age_index(_age_index);
382 }
383
384 inline bool HeapRegion::has_surv_rate_group() const {
385 return _surv_rate_group != NULL;
386 }
387
388 inline double HeapRegion::surv_rate_prediction(G1Predictions const& predictor) const {
389 assert(has_surv_rate_group(), "pre-condition");
390 return _surv_rate_group->surv_rate_pred(predictor, age_in_surv_rate_group());
391 }
392
393 inline void HeapRegion::install_surv_rate_group(G1SurvRateGroup* surv_rate_group) {
394 assert(surv_rate_group != NULL, "pre-condition");
395 assert(!has_surv_rate_group(), "pre-condition");
396 assert(is_young(), "pre-condition");
397
398 _surv_rate_group = surv_rate_group;
399 _age_index = surv_rate_group->next_age_index();
400 }
401
402 inline void HeapRegion::uninstall_surv_rate_group() {
403 if (has_surv_rate_group()) {
404 assert(has_valid_age_in_surv_rate(), "pre-condition");
405 assert(is_young(), "pre-condition");
406
407 _surv_rate_group = NULL;
408 _age_index = G1SurvRateGroup::InvalidAgeIndex;
409 } else {
410 assert(!has_valid_age_in_surv_rate(), "pre-condition");
411 }
412 }
413
414 inline void HeapRegion::record_surv_words_in_group(size_t words_survived) {
415 assert(has_surv_rate_group(), "pre-condition");
416 assert(has_valid_age_in_surv_rate(), "pre-condition");
417 int age_in_group = age_in_surv_rate_group();
418 _surv_rate_group->record_surviving_words(age_in_group, words_survived);
419 }
420
421 #endif // SHARE_GC_G1_HEAPREGION_INLINE_HPP
|