< 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 >