241 _bottom(mr.start()),
242 _end(mr.end()),
243 _top(NULL),
244 _compaction_top(NULL),
245 _bot_part(bot, this),
246 _par_alloc_lock(Mutex::leaf, "HeapRegion par alloc lock", true),
247 _pre_dummy_top(NULL),
248 _rem_set(NULL),
249 _hrm_index(hrm_index),
250 _type(),
251 _humongous_start_region(NULL),
252 _evacuation_failed(false),
253 _index_in_opt_cset(InvalidCSetIndex),
254 _next(NULL), _prev(NULL),
255 #ifdef ASSERT
256 _containing_set(NULL),
257 #endif
258 _prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
259 _prev_marked_bytes(0), _next_marked_bytes(0),
260 _young_index_in_cset(-1),
261 _surv_rate_group(NULL), _age_index(-1), _gc_efficiency(0.0),
262 _recorded_rs_length(0), _predicted_elapsed_time_ms(0),
263 _node_index(G1NUMA::UnknownNodeIndex)
264 {
265 assert(Universe::on_page_boundary(mr.start()) && Universe::on_page_boundary(mr.end()),
266 "invalid space boundaries");
267
268 _rem_set = new HeapRegionRemSet(bot, this);
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
275 if (clear_space) {
276 clear(mangle_space);
277 }
278
279 set_top(bottom());
280 set_compaction_top(bottom());
281 reset_bot();
|
241 _bottom(mr.start()),
242 _end(mr.end()),
243 _top(NULL),
244 _compaction_top(NULL),
245 _bot_part(bot, this),
246 _par_alloc_lock(Mutex::leaf, "HeapRegion par alloc lock", true),
247 _pre_dummy_top(NULL),
248 _rem_set(NULL),
249 _hrm_index(hrm_index),
250 _type(),
251 _humongous_start_region(NULL),
252 _evacuation_failed(false),
253 _index_in_opt_cset(InvalidCSetIndex),
254 _next(NULL), _prev(NULL),
255 #ifdef ASSERT
256 _containing_set(NULL),
257 #endif
258 _prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
259 _prev_marked_bytes(0), _next_marked_bytes(0),
260 _young_index_in_cset(-1),
261 _surv_rate_group(NULL), _age_index(SurvRateGroup::InvalidAgeIndex), _gc_efficiency(0.0),
262 _recorded_rs_length(0), _predicted_elapsed_time_ms(0),
263 _node_index(G1NUMA::UnknownNodeIndex)
264 {
265 assert(Universe::on_page_boundary(mr.start()) && Universe::on_page_boundary(mr.end()),
266 "invalid space boundaries");
267
268 _rem_set = new HeapRegionRemSet(bot, this);
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
275 if (clear_space) {
276 clear(mangle_space);
277 }
278
279 set_top(bottom());
280 set_compaction_top(bottom());
281 reset_bot();
|