hotspot/src/share/vm/memory/collectorPolicy.hpp
changeset 186 32e6c95f8d9b
parent 1 489c9b5090e2
child 670 ddf3e9583f2f
child 1374 4c24294029a9
equal deleted inserted replaced
185:cda2a1eb4be5 186:32e6c95f8d9b
    80   size_t min_alignment()                       { return _min_alignment; }
    80   size_t min_alignment()                       { return _min_alignment; }
    81   void set_max_alignment(size_t align)         { _max_alignment = align; }
    81   void set_max_alignment(size_t align)         { _max_alignment = align; }
    82   size_t max_alignment()                       { return _max_alignment; }
    82   size_t max_alignment()                       { return _max_alignment; }
    83 
    83 
    84   size_t initial_heap_byte_size() { return _initial_heap_byte_size; }
    84   size_t initial_heap_byte_size() { return _initial_heap_byte_size; }
       
    85   void set_initial_heap_byte_size(size_t v) { _initial_heap_byte_size = v; }
    85   size_t max_heap_byte_size()     { return _max_heap_byte_size; }
    86   size_t max_heap_byte_size()     { return _max_heap_byte_size; }
       
    87   void set_max_heap_byte_size(size_t v) { _max_heap_byte_size = v; }
    86   size_t min_heap_byte_size()     { return _min_heap_byte_size; }
    88   size_t min_heap_byte_size()     { return _min_heap_byte_size; }
       
    89   void set_min_heap_byte_size(size_t v) { _min_heap_byte_size = v; }
    87 
    90 
    88   enum Name {
    91   enum Name {
    89     CollectorPolicyKind,
    92     CollectorPolicyKind,
    90     TwoGenerationCollectorPolicyKind,
    93     TwoGenerationCollectorPolicyKind,
    91     TrainPolicyKind,
    94     TrainPolicyKind,
   180   virtual HeapWord* expand_heap_and_allocate(size_t size, bool is_tlab);
   183   virtual HeapWord* expand_heap_and_allocate(size_t size, bool is_tlab);
   181 
   184 
   182   // compute max heap alignment
   185   // compute max heap alignment
   183   size_t compute_max_alignment();
   186   size_t compute_max_alignment();
   184 
   187 
   185 
   188  // Scale the base_size by NewRation according to
   186  public:
   189  //     result = base_size / (NewRatio + 1)
       
   190  // and align by min_alignment()
       
   191  size_t scale_by_NewRatio_aligned(size_t base_size);
       
   192 
       
   193  // Bound the value by the given maximum minus the
       
   194  // min_alignment.
       
   195  size_t bound_minus_alignment(size_t desired_size, size_t maximum_size);
       
   196 
       
   197  public:
       
   198   // Accessors
       
   199   size_t min_gen0_size() { return _min_gen0_size; }
       
   200   void set_min_gen0_size(size_t v) { _min_gen0_size = v; }
       
   201   size_t initial_gen0_size() { return _initial_gen0_size; }
       
   202   void set_initial_gen0_size(size_t v) { _initial_gen0_size = v; }
       
   203   size_t max_gen0_size() { return _max_gen0_size; }
       
   204   void set_max_gen0_size(size_t v) { _max_gen0_size = v; }
       
   205 
   187   virtual int number_of_generations() = 0;
   206   virtual int number_of_generations() = 0;
   188 
   207 
   189   virtual GenerationSpec **generations()       {
   208   virtual GenerationSpec **generations()       {
   190     assert(_generations != NULL, "Sanity check");
   209     assert(_generations != NULL, "Sanity check");
   191     return _generations;
   210     return _generations;
   234   void initialize_flags();
   253   void initialize_flags();
   235   void initialize_size_info();
   254   void initialize_size_info();
   236   void initialize_generations()                { ShouldNotReachHere(); }
   255   void initialize_generations()                { ShouldNotReachHere(); }
   237 
   256 
   238  public:
   257  public:
       
   258   // Accessors
       
   259   size_t min_gen1_size() { return _min_gen1_size; }
       
   260   void set_min_gen1_size(size_t v) { _min_gen1_size = v; }
       
   261   size_t initial_gen1_size() { return _initial_gen1_size; }
       
   262   void set_initial_gen1_size(size_t v) { _initial_gen1_size = v; }
       
   263   size_t max_gen1_size() { return _max_gen1_size; }
       
   264   void set_max_gen1_size(size_t v) { _max_gen1_size = v; }
       
   265 
   239   // Inherited methods
   266   // Inherited methods
   240   TwoGenerationCollectorPolicy* as_two_generation_policy() { return this; }
   267   TwoGenerationCollectorPolicy* as_two_generation_policy() { return this; }
   241 
   268 
   242   int number_of_generations()                  { return 2; }
   269   int number_of_generations()                  { return 2; }
   243   BarrierSet::Name barrier_set_name()          { return BarrierSet::CardTableModRef; }
   270   BarrierSet::Name barrier_set_name()          { return BarrierSet::CardTableModRef; }
   244   GenRemSet::Name rem_set_name()               { return GenRemSet::CardTable; }
   271   GenRemSet::Name rem_set_name()               { return GenRemSet::CardTable; }
   245 
   272 
   246   virtual CollectorPolicy::Name kind() {
   273   virtual CollectorPolicy::Name kind() {
   247     return CollectorPolicy::TwoGenerationCollectorPolicyKind;
   274     return CollectorPolicy::TwoGenerationCollectorPolicyKind;
   248   }
   275   }
       
   276 
       
   277   // Returns true is gen0 sizes were adjusted
       
   278   bool adjust_gen0_sizes(size_t* gen0_size_ptr, size_t* gen1_size_ptr,
       
   279                                size_t heap_size, size_t min_gen1_size);
   249 };
   280 };
   250 
   281 
   251 class MarkSweepPolicy : public TwoGenerationCollectorPolicy {
   282 class MarkSweepPolicy : public TwoGenerationCollectorPolicy {
   252  protected:
   283  protected:
   253   void initialize_generations();
   284   void initialize_generations();