236 } |
236 } |
237 |
237 |
238 HeapRegion::HeapRegion(uint hrm_index, |
238 HeapRegion::HeapRegion(uint hrm_index, |
239 G1BlockOffsetTable* bot, |
239 G1BlockOffsetTable* bot, |
240 MemRegion mr) : |
240 MemRegion mr) : |
241 _bottom(NULL), |
241 _bottom(mr.start()), |
242 _end(NULL), |
242 _end(mr.end()), |
243 _top(NULL), |
243 _top(NULL), |
244 _compaction_top(NULL), |
244 _compaction_top(NULL), |
245 _bot_part(bot, this), |
245 _bot_part(bot, this), |
246 _par_alloc_lock(Mutex::leaf, "HeapRegion par alloc lock", true), |
246 _par_alloc_lock(Mutex::leaf, "HeapRegion par alloc lock", true), |
247 _pre_dummy_top(NULL), |
247 _pre_dummy_top(NULL), |
260 _young_index_in_cset(-1), |
260 _young_index_in_cset(-1), |
261 _surv_rate_group(NULL), _age_index(-1), _gc_efficiency(0.0), |
261 _surv_rate_group(NULL), _age_index(-1), _gc_efficiency(0.0), |
262 _recorded_rs_length(0), _predicted_elapsed_time_ms(0), |
262 _recorded_rs_length(0), _predicted_elapsed_time_ms(0), |
263 _node_index(G1NUMA::UnknownNodeIndex) |
263 _node_index(G1NUMA::UnknownNodeIndex) |
264 { |
264 { |
265 _rem_set = new HeapRegionRemSet(bot, this); |
|
266 |
|
267 initialize(mr); |
|
268 } |
|
269 |
|
270 void HeapRegion::initialize(MemRegion mr, bool clear_space, bool mangle_space) { |
|
271 assert(_rem_set->is_empty(), "Remembered set must be empty"); |
|
272 |
|
273 assert(Universe::on_page_boundary(mr.start()) && Universe::on_page_boundary(mr.end()), |
265 assert(Universe::on_page_boundary(mr.start()) && Universe::on_page_boundary(mr.end()), |
274 "invalid space boundaries"); |
266 "invalid space boundaries"); |
275 |
267 |
276 set_bottom(mr.start()); |
268 _rem_set = new HeapRegionRemSet(bot, this); |
277 set_end(mr.end()); |
269 initialize(); |
|
270 } |
|
271 |
|
272 void HeapRegion::initialize(bool clear_space, bool mangle_space) { |
|
273 assert(_rem_set->is_empty(), "Remembered set must be empty"); |
|
274 |
278 if (clear_space) { |
275 if (clear_space) { |
279 clear(mangle_space); |
276 clear(mangle_space); |
280 } |
277 } |
281 |
278 |
282 set_top(bottom()); |
279 set_top(bottom()); |