hotspot/src/share/vm/gc/g1/survRateGroup.hpp
changeset 38185 c432f8466c73
parent 33216 8ecefd0f0d10
equal deleted inserted replaced
38184:c149a974c35b 38185:c432f8466c73
    29 
    29 
    30 class G1Predictions;
    30 class G1Predictions;
    31 
    31 
    32 class SurvRateGroup : public CHeapObj<mtGC> {
    32 class SurvRateGroup : public CHeapObj<mtGC> {
    33 private:
    33 private:
    34   G1Predictions* _predictor;
       
    35 
       
    36   double get_new_prediction(TruncatedSeq const* seq) const;
       
    37 
       
    38   const char* _name;
       
    39 
       
    40   size_t  _stats_arrays_length;
    34   size_t  _stats_arrays_length;
    41   double* _surv_rate;
       
    42   double* _accum_surv_rate_pred;
    35   double* _accum_surv_rate_pred;
    43   double  _last_pred;
    36   double  _last_pred;
    44   TruncatedSeq** _surv_rate_pred;
    37   TruncatedSeq** _surv_rate_pred;
    45   NumberSeq**    _summary_surv_rates;
       
    46   size_t         _summary_surv_rates_len;
       
    47   size_t         _summary_surv_rates_max_len;
       
    48 
    38 
    49   int _all_regions_allocated;
    39   int _all_regions_allocated;
    50   size_t _region_num;
    40   size_t _region_num;
    51   size_t _setup_seq_num;
    41   size_t _setup_seq_num;
    52 
    42 
       
    43   void fill_in_last_surv_rates();
       
    44   void finalize_predictions(const G1Predictions& predictor);
    53 public:
    45 public:
    54   SurvRateGroup(G1Predictions* predictor,
    46   SurvRateGroup();
    55                 const char* name,
       
    56                 size_t summary_surv_rates_len);
       
    57   void reset();
    47   void reset();
    58   void start_adding_regions();
    48   void start_adding_regions();
    59   void stop_adding_regions();
    49   void stop_adding_regions();
    60   void record_surviving_words(int age_in_group, size_t surv_words);
    50   void record_surviving_words(int age_in_group, size_t surv_words);
    61   void all_surviving_words_recorded(bool update_predictors);
    51   void all_surviving_words_recorded(const G1Predictions& predictor, bool update_predictors);
    62   const char* name() { return _name; }
       
    63 
    52 
    64   size_t region_num() { return _region_num; }
    53   size_t region_num() const { return _region_num; }
       
    54 
    65   double accum_surv_rate_pred(int age) const {
    55   double accum_surv_rate_pred(int age) const {
    66     assert(age >= 0, "must be");
    56     assert(age >= 0, "must be");
    67     if ((size_t)age < _stats_arrays_length)
    57     if ((size_t)age < _stats_arrays_length)
    68       return _accum_surv_rate_pred[age];
    58       return _accum_surv_rate_pred[age];
    69     else {
    59     else {
    80     TruncatedSeq* seq = _surv_rate_pred[age];
    70     TruncatedSeq* seq = _surv_rate_pred[age];
    81     guarantee( seq != NULL, "invariant" );
    71     guarantee( seq != NULL, "invariant" );
    82     return seq;
    72     return seq;
    83   }
    73   }
    84 
    74 
    85   int next_age_index();
    75   int next_age_index() {
    86   int age_in_group(int age_index) {
    76     ++_region_num;
       
    77     return (int) ++_all_regions_allocated;
       
    78   }
       
    79 
       
    80   int age_in_group(int age_index) const {
    87     int ret = (int) (_all_regions_allocated - age_index);
    81     int ret = (int) (_all_regions_allocated - age_index);
    88     assert( ret >= 0, "invariant" );
    82     assert( ret >= 0, "invariant" );
    89     return ret;
    83     return ret;
    90   }
    84   }
    91   void finished_recalculating_age_indexes() {
    85   void finished_recalculating_age_indexes() {
    92     _all_regions_allocated = 0;
    86     _all_regions_allocated = 0;
    93   }
    87   }
    94 
    88 
    95 #ifndef PRODUCT
       
    96   void print();
       
    97   void print_surv_rate_summary();
       
    98 #endif // PRODUCT
       
    99 };
    89 };
   100 
    90 
   101 #endif // SHARE_VM_GC_G1_SURVRATEGROUP_HPP
    91 #endif // SHARE_VM_GC_G1_SURVRATEGROUP_HPP