src/share/vm/gc_implementation/g1/heapRegion.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hs-gc9 Cdiff src/share/vm/gc_implementation/g1/heapRegion.cpp

src/share/vm/gc_implementation/g1/heapRegion.cpp

Print this page

        

*** 320,352 **** } } return false; } - HeapWord* HeapRegion::next_block_start_careful(HeapWord* addr) { - HeapWord* low = addr; - HeapWord* high = end(); - while (low < high) { - size_t diff = pointer_delta(high, low); - // Must add one below to bias toward the high amount. Otherwise, if - // "high" were at the desired value, and "low" were one less, we - // would not converge on "high". This is not symmetric, because - // we set "high" to a block start, which might be the right one, - // which we don't do for "low". - HeapWord* middle = low + (diff+1)/2; - if (middle == high) return high; - HeapWord* mid_bs = block_start_careful(middle); - if (mid_bs < addr) { - low = middle; - } else { - high = mid_bs; - } - } - assert(low == high && low >= addr, "Didn't work."); - return low; - } - HeapRegion::HeapRegion(uint hrs_index, G1BlockOffsetSharedArray* sharedOffsetArray, MemRegion mr) : G1OffsetTableContigSpace(sharedOffsetArray, mr), _hrs_index(hrs_index), --- 320,329 ----
src/share/vm/gc_implementation/g1/heapRegion.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File