src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
changeset 59252 623722a6aeb9
parent 59249 29b0d0b61615
child 59290 97d13893ec3c
equal deleted inserted replaced
59251:4cbfa5077d68 59252:623722a6aeb9
  1904     // Above heap_region_containing may return NULL as we always scan claim
  1904     // Above heap_region_containing may return NULL as we always scan claim
  1905     // until the end of the heap. In this case, just jump to the next region.
  1905     // until the end of the heap. In this case, just jump to the next region.
  1906     HeapWord* end = curr_region != NULL ? curr_region->end() : finger + HeapRegion::GrainWords;
  1906     HeapWord* end = curr_region != NULL ? curr_region->end() : finger + HeapRegion::GrainWords;
  1907 
  1907 
  1908     // Is the gap between reading the finger and doing the CAS too long?
  1908     // Is the gap between reading the finger and doing the CAS too long?
  1909     HeapWord* res = Atomic::cmpxchg(end, &_finger, finger);
  1909     HeapWord* res = Atomic::cmpxchg(&_finger, finger, end);
  1910     if (res == finger && curr_region != NULL) {
  1910     if (res == finger && curr_region != NULL) {
  1911       // we succeeded
  1911       // we succeeded
  1912       HeapWord*   bottom        = curr_region->bottom();
  1912       HeapWord*   bottom        = curr_region->bottom();
  1913       HeapWord*   limit         = curr_region->next_top_at_mark_start();
  1913       HeapWord*   limit         = curr_region->next_top_at_mark_start();
  1914 
  1914