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(); |