src/hotspot/share/gc/g1/heapRegion.cpp
changeset 59220 72e15d757e6c
parent 59219 01cc6bb2a090
child 59290 97d13893ec3c
equal deleted inserted replaced
59219:01cc6bb2a090 59220:72e15d757e6c
   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());