--- old/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp 2018-10-24 21:35:03.392389256 +0200 +++ new/src/hotspot/share/gc/g1/g1OopClosures.inline.hpp 2018-10-24 21:35:03.168387993 +0200 @@ -87,7 +87,10 @@ return; } handle_non_cset_obj_common(state, p, obj); - _par_scan_state->update_rs(_from, p, obj); + if (_from_is_young) { + return; + } + _par_scan_state->enqueue_card_if_tracked(p, obj); } } @@ -173,12 +176,12 @@ // that this is a cross-region reference too. prefetch_and_push(p, obj); } else { - HeapRegion* to = _g1h->heap_region_containing(obj); - if (_from == to) { + if (HeapRegion::is_in_same_region(p, obj)) { return; } handle_non_cset_obj_common(state, p, obj); - to->rem_set()->add_reference(p, _worker_i); + assert(!_from_is_young, "Should not be the case."); + _par_scan_state->enqueue_card_if_tracked(p, obj); } }