< prev index next >

src/hotspot/share/gc/g1/g1SurvRateGroup.hpp

Print this page
rev 57223 : imported patch 8225484-changes-to-survivor-calculation


  50 // index 0 contains the rate information for the region retired most recently.
  51 class G1SurvRateGroup : public CHeapObj<mtGC> {
  52   size_t  _stats_arrays_length;
  53   double* _accum_surv_rate_pred;
  54   double  _last_pred;
  55   TruncatedSeq** _surv_rate_predictors;
  56 
  57   size_t _num_added_regions;   // The number of regions in this survivor rate group.
  58 
  59   void fill_in_last_surv_rates();
  60   void finalize_predictions(const G1Predictions& predictor);
  61 
  62 public:
  63   static const int InvalidAgeIndex = -1;
  64   static bool is_valid_age_index(int age) { return age >= 0; }
  65 
  66   G1SurvRateGroup();
  67   void reset();
  68   void start_adding_regions();
  69   void stop_adding_regions();
  70   void record_surviving_words(int age_in_group, size_t surv_words);
  71   void all_surviving_words_recorded(const G1Predictions& predictor, bool update_predictors);
  72 
  73   double accum_surv_rate_pred(int age) const {
  74     assert(_stats_arrays_length > 0, "invariant" );
  75     assert(is_valid_age_index(age), "must be");
  76     if ((size_t)age < _stats_arrays_length)
  77       return _accum_surv_rate_pred[age];
  78     else {
  79       double diff = (double)(age - _stats_arrays_length + 1);
  80       return _accum_surv_rate_pred[_stats_arrays_length - 1] + diff * _last_pred;
  81     }
  82   }
  83 
  84   double surv_rate_pred(G1Predictions const& predictor, int age) const {
  85     assert(is_valid_age_index(age), "must be");
  86 
  87     age = MIN2(age, (int)_stats_arrays_length - 1);
  88 
  89     return predictor.predict_in_unit_interval(_surv_rate_predictors[age]);
  90   }


  50 // index 0 contains the rate information for the region retired most recently.
  51 class G1SurvRateGroup : public CHeapObj<mtGC> {
  52   size_t  _stats_arrays_length;
  53   double* _accum_surv_rate_pred;
  54   double  _last_pred;
  55   TruncatedSeq** _surv_rate_predictors;
  56 
  57   size_t _num_added_regions;   // The number of regions in this survivor rate group.
  58 
  59   void fill_in_last_surv_rates();
  60   void finalize_predictions(const G1Predictions& predictor);
  61 
  62 public:
  63   static const int InvalidAgeIndex = -1;
  64   static bool is_valid_age_index(int age) { return age >= 0; }
  65 
  66   G1SurvRateGroup();
  67   void reset();
  68   void start_adding_regions();
  69   void stop_adding_regions();
  70   void record_surviving_words(int age_in_group, double surv_rate);
  71   void all_surviving_words_recorded(const G1Predictions& predictor, bool update_predictors);
  72 
  73   double accum_surv_rate_pred(int age) const {
  74     assert(_stats_arrays_length > 0, "invariant" );
  75     assert(is_valid_age_index(age), "must be");
  76     if ((size_t)age < _stats_arrays_length)
  77       return _accum_surv_rate_pred[age];
  78     else {
  79       double diff = (double)(age - _stats_arrays_length + 1);
  80       return _accum_surv_rate_pred[_stats_arrays_length - 1] + diff * _last_pred;
  81     }
  82   }
  83 
  84   double surv_rate_pred(G1Predictions const& predictor, int age) const {
  85     assert(is_valid_age_index(age), "must be");
  86 
  87     age = MIN2(age, (int)_stats_arrays_length - 1);
  88 
  89     return predictor.predict_in_unit_interval(_surv_rate_predictors[age]);
  90   }
< prev index next >