--- old/src/share/vm/gc/g1/g1ConcurrentMark.inline.hpp 2017-07-14 16:23:39.898224014 +0200 +++ new/src/share/vm/gc/g1/g1ConcurrentMark.inline.hpp 2017-07-14 16:23:39.797220935 +0200 @@ -204,21 +204,10 @@ inline void G1CMTask::deal_with_reference(oop obj) { increment_refs_reached(); - - HeapWord* objAddr = (HeapWord*) obj; - assert(obj->is_oop_or_null(true /* ignore mark word */), "Expected an oop or NULL at " PTR_FORMAT, p2i(obj)); - if (_g1h->is_in_g1_reserved(objAddr)) { - assert(obj != NULL, "null check is implicit"); - if (!_nextMarkBitMap->is_marked(objAddr)) { - // Only get the containing region if the object is not marked on the - // bitmap (otherwise, it's a waste of time since we won't do - // anything with it). - HeapRegion* hr = _g1h->heap_region_containing(obj); - if (!hr->obj_allocated_since_next_marking(obj)) { - make_reference_grey(obj); - } - } + if (obj == NULL) { + return; } + make_reference_grey(obj); } inline void G1ConcurrentMark::markPrev(oop p) {