< prev index next >

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

Print this page

        

*** 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 (_scanning_in_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,188 ---- 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); ! _par_scan_state->enqueue_card_if_tracked(p, obj); } } template <class T> inline void G1ScanObjsDuringScanRSClosure::do_oop_work(T* p) {
< prev index next >