src/hotspot/share/gc/g1/heapRegion.cpp
changeset 59218 a1155217a563
parent 59062 6530de931b8e
child 59219 01cc6bb2a090
equal deleted inserted replaced
59217:82db5000a845 59218:a1155217a563
   243   _rem_set(NULL),
   243   _rem_set(NULL),
   244   _hrm_index(hrm_index),
   244   _hrm_index(hrm_index),
   245   _type(),
   245   _type(),
   246   _humongous_start_region(NULL),
   246   _humongous_start_region(NULL),
   247   _evacuation_failed(false),
   247   _evacuation_failed(false),
       
   248   _index_in_opt_cset(InvalidCSetIndex),
   248   _next(NULL), _prev(NULL),
   249   _next(NULL), _prev(NULL),
   249 #ifdef ASSERT
   250 #ifdef ASSERT
   250   _containing_set(NULL),
   251   _containing_set(NULL),
   251 #endif
   252 #endif
   252   _prev_marked_bytes(0), _next_marked_bytes(0), _gc_efficiency(0.0),
       
   253   _index_in_opt_cset(InvalidCSetIndex), _young_index_in_cset(-1),
       
   254   _surv_rate_group(NULL), _age_index(-1),
       
   255   _prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
   253   _prev_top_at_mark_start(NULL), _next_top_at_mark_start(NULL),
       
   254   _prev_marked_bytes(0), _next_marked_bytes(0),
       
   255   _young_index_in_cset(-1),
       
   256   _surv_rate_group(NULL), _age_index(-1), _gc_efficiency(0.0),
   256   _recorded_rs_length(0), _predicted_elapsed_time_ms(0),
   257   _recorded_rs_length(0), _predicted_elapsed_time_ms(0),
   257   _node_index(G1NUMA::UnknownNodeIndex)
   258   _node_index(G1NUMA::UnknownNodeIndex)
   258 {
   259 {
   259   _rem_set = new HeapRegionRemSet(bot, this);
   260   _rem_set = new HeapRegionRemSet(bot, this);
   260 
   261 
   753   // range [top, end). BOT look-ups in this range should yield
   754   // range [top, end). BOT look-ups in this range should yield
   754   // top. No point in doing that if top == end (there's nothing there).
   755   // top. No point in doing that if top == end (there's nothing there).
   755   if (p < the_end) {
   756   if (p < the_end) {
   756     // Look up top
   757     // Look up top
   757     HeapWord* addr_1 = p;
   758     HeapWord* addr_1 = p;
   758     HeapWord* b_start_1 = _bot_part.block_start_const(addr_1);
   759     HeapWord* b_start_1 = block_start_const(addr_1);
   759     if (b_start_1 != p) {
   760     if (b_start_1 != p) {
   760       log_error(gc, verify)("BOT look up for top: " PTR_FORMAT " "
   761       log_error(gc, verify)("BOT look up for top: " PTR_FORMAT " "
   761                             " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   762                             " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   762                             p2i(addr_1), p2i(b_start_1), p2i(p));
   763                             p2i(addr_1), p2i(b_start_1), p2i(p));
   763       *failures = true;
   764       *failures = true;
   765     }
   766     }
   766 
   767 
   767     // Look up top + 1
   768     // Look up top + 1
   768     HeapWord* addr_2 = p + 1;
   769     HeapWord* addr_2 = p + 1;
   769     if (addr_2 < the_end) {
   770     if (addr_2 < the_end) {
   770       HeapWord* b_start_2 = _bot_part.block_start_const(addr_2);
   771       HeapWord* b_start_2 = block_start_const(addr_2);
   771       if (b_start_2 != p) {
   772       if (b_start_2 != p) {
   772         log_error(gc, verify)("BOT look up for top + 1: " PTR_FORMAT " "
   773         log_error(gc, verify)("BOT look up for top + 1: " PTR_FORMAT " "
   773                               " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   774                               " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   774                               p2i(addr_2), p2i(b_start_2), p2i(p));
   775                               p2i(addr_2), p2i(b_start_2), p2i(p));
   775         *failures = true;
   776         *failures = true;
   779 
   780 
   780     // Look up an address between top and end
   781     // Look up an address between top and end
   781     size_t diff = pointer_delta(the_end, p) / 2;
   782     size_t diff = pointer_delta(the_end, p) / 2;
   782     HeapWord* addr_3 = p + diff;
   783     HeapWord* addr_3 = p + diff;
   783     if (addr_3 < the_end) {
   784     if (addr_3 < the_end) {
   784       HeapWord* b_start_3 = _bot_part.block_start_const(addr_3);
   785       HeapWord* b_start_3 = block_start_const(addr_3);
   785       if (b_start_3 != p) {
   786       if (b_start_3 != p) {
   786         log_error(gc, verify)("BOT look up for top + diff: " PTR_FORMAT " "
   787         log_error(gc, verify)("BOT look up for top + diff: " PTR_FORMAT " "
   787                               " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   788                               " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   788                               p2i(addr_3), p2i(b_start_3), p2i(p));
   789                               p2i(addr_3), p2i(b_start_3), p2i(p));
   789         *failures = true;
   790         *failures = true;
   791       }
   792       }
   792     }
   793     }
   793 
   794 
   794     // Look up end - 1
   795     // Look up end - 1
   795     HeapWord* addr_4 = the_end - 1;
   796     HeapWord* addr_4 = the_end - 1;
   796     HeapWord* b_start_4 = _bot_part.block_start_const(addr_4);
   797     HeapWord* b_start_4 = block_start_const(addr_4);
   797     if (b_start_4 != p) {
   798     if (b_start_4 != p) {
   798       log_error(gc, verify)("BOT look up for end - 1: " PTR_FORMAT " "
   799       log_error(gc, verify)("BOT look up for end - 1: " PTR_FORMAT " "
   799                             " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   800                             " yielded " PTR_FORMAT ", expecting " PTR_FORMAT,
   800                             p2i(addr_4), p2i(b_start_4), p2i(p));
   801                             p2i(addr_4), p2i(b_start_4), p2i(p));
   801       *failures = true;
   802       *failures = true;