< prev index next >

src/hotspot/share/gc/g1/g1OopClosures.inline.hpp

Print this page
rev 52281 : [mq]: 8212911-unify-reference-handling-during-gc

*** 85,95 **** } else { if (HeapRegion::is_in_same_region(p, obj)) { return; } handle_non_cset_obj_common(state, p, obj); ! _par_scan_state->update_rs(_from, p, obj); } } template <class T> inline void G1CMOopClosure::do_oop_work(T* p) { --- 85,98 ---- } else { if (HeapRegion::is_in_same_region(p, obj)) { return; } handle_non_cset_obj_common(state, p, obj); ! if (_from_is_young) { ! return; ! } ! _par_scan_state->enqueue_card_if_tracked(p, obj); } } template <class T> inline void G1CMOopClosure::do_oop_work(T* p) {
*** 171,186 **** if (state.is_in_cset()) { // Since the source is always from outside the collection set, here we implicitly know // that this is a cross-region reference too. prefetch_and_push(p, obj); } else { ! HeapRegion* to = _g1h->heap_region_containing(obj); ! if (_from == to) { return; } handle_non_cset_obj_common(state, p, obj); ! to->rem_set()->add_reference(p, _worker_i); } } template <class T> inline void G1ScanObjsDuringScanRSClosure::do_oop_work(T* p) { --- 174,189 ---- if (state.is_in_cset()) { // Since the source is always from outside the collection set, here we implicitly know // that this is a cross-region reference too. prefetch_and_push(p, obj); } else { ! if (HeapRegion::is_in_same_region(p, obj)) { return; } handle_non_cset_obj_common(state, p, obj); ! assert(!_from_is_young, "Should not be the case."); ! _par_scan_state->enqueue_card_if_tracked(p, obj); } } template <class T> inline void G1ScanObjsDuringScanRSClosure::do_oop_work(T* p) {
< prev index next >