< prev index next >

src/share/vm/gc/g1/g1ConcurrentMark.inline.hpp

Print this page

        

*** 45,55 **** if (hr->obj_allocated_since_next_marking(obj)) { return false; } // Some callers may have stale objects to mark above nTAMS after humongous reclaim. ! assert(obj->is_oop(true /* ignore mark word */), "Address " PTR_FORMAT " to mark is not an oop", p2i(obj)); assert(!hr->is_continues_humongous(), "Should not try to mark object " PTR_FORMAT " in Humongous continues region %u above nTAMS " PTR_FORMAT, p2i(obj), hr->hrm_index(), p2i(hr->next_top_at_mark_start())); HeapWord* const obj_addr = (HeapWord*)obj; // Dirty read to avoid CAS. if (_nextMarkBitMap->is_marked(obj_addr)) { --- 45,55 ---- if (hr->obj_allocated_since_next_marking(obj)) { return false; } // Some callers may have stale objects to mark above nTAMS after humongous reclaim. ! // Can't assert that this is a valid object at this point, since it might be in the process of being copied by another thread. assert(!hr->is_continues_humongous(), "Should not try to mark object " PTR_FORMAT " in Humongous continues region %u above nTAMS " PTR_FORMAT, p2i(obj), hr->hrm_index(), p2i(hr->next_top_at_mark_start())); HeapWord* const obj_addr = (HeapWord*)obj; // Dirty read to avoid CAS. if (_nextMarkBitMap->is_marked(obj_addr)) {
< prev index next >