--- old/src/share/vm/gc/g1/g1ParScanThreadState.inline.hpp 2017-07-03 12:19:01.760873350 +0200 +++ new/src/share/vm/gc/g1/g1ParScanThreadState.inline.hpp 2017-07-03 12:19:01.627869252 +0200 @@ -47,15 +47,19 @@ obj = copy_to_survivor_space(in_cset_state, obj, m); } oopDesc::encode_store_heap_oop(p, obj); - } else if (in_cset_state.is_humongous()) { - _g1h->set_humongous_is_live(obj); } else { - assert(in_cset_state.is_default() || in_cset_state.is_ext(), + if (in_cset_state.is_humongous()) { + _g1h->set_humongous_is_live(obj); + } else { + assert(in_cset_state.is_default() || in_cset_state.is_ext(), "In_cset_state must be NotInCSet or Ext here, but is " CSETSTATE_FORMAT, in_cset_state.value()); + } } assert(obj != NULL, "Must be"); - update_rs(from, p, obj); + if (!HeapRegion::is_in_same_region(p, obj)) { + update_rs(from, p, obj); + } } template inline void G1ParScanThreadState::push_on_queue(T* ref) {