< prev index next >

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

Print this page
rev 52316 : imported patch 8212911-unify-reference-handling-during-gc
rev 52317 : imported patch 8212911-stefanj-review
rev 52318 : imported patch 8212911-kbarrett-review

*** 80,95 **** } oop obj = CompressedOops::decode_not_null(heap_oop); const InCSetState state = _g1h->in_cset_state(obj); if (state.is_in_cset()) { 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->update_rs(_from, p, obj); } } template <class T> inline void G1CMOopClosure::do_oop_work(T* p) { --- 80,95 ---- } oop obj = CompressedOops::decode_not_null(heap_oop); const InCSetState state = _g1h->in_cset_state(obj); if (state.is_in_cset()) { prefetch_and_push(p, obj); ! } else if (!HeapRegion::is_in_same_region(p, obj)) { ! 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) {
*** 170,186 **** const InCSetState state = _g1h->in_cset_state(obj); 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) { --- 170,182 ---- const InCSetState state = _g1h->in_cset_state(obj); 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)) { 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) {
*** 191,204 **** oop obj = CompressedOops::decode_not_null(heap_oop); const InCSetState state = _g1h->in_cset_state(obj); if (state.is_in_cset()) { prefetch_and_push(p, obj); ! } else { ! if (HeapRegion::is_in_same_region(p, obj)) { ! return; ! } handle_non_cset_obj_common(state, p, obj); } } void G1ParCopyHelper::do_cld_barrier(oop new_obj) { --- 187,197 ---- oop obj = CompressedOops::decode_not_null(heap_oop); const InCSetState state = _g1h->in_cset_state(obj); if (state.is_in_cset()) { prefetch_and_push(p, obj); ! } else if (!HeapRegion::is_in_same_region(p, obj)) { handle_non_cset_obj_common(state, p, obj); } } void G1ParCopyHelper::do_cld_barrier(oop new_obj) {
< prev index next >