src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp
Print this page
*** 39,52 ****
// than one thread might claim the same card. So the same card may be
// processed multiple times. So redo this check.
G1CollectedHeap::in_cset_state_t in_cset_state = _g1h->in_cset_state(obj);
if (in_cset_state == G1CollectedHeap::InCSet) {
oop forwardee;
! if (obj->is_forwarded()) {
! forwardee = obj->forwardee();
} else {
! forwardee = copy_to_survivor_space(obj);
}
oopDesc::encode_store_heap_oop(p, forwardee);
} else if (in_cset_state == G1CollectedHeap::IsHumongous) {
_g1h->set_humongous_is_live(obj);
} else {
--- 39,53 ----
// than one thread might claim the same card. So the same card may be
// processed multiple times. So redo this check.
G1CollectedHeap::in_cset_state_t in_cset_state = _g1h->in_cset_state(obj);
if (in_cset_state == G1CollectedHeap::InCSet) {
oop forwardee;
! markOop m = obj->mark();
! if (m->is_marked()) {
! forwardee = (oop) m->decode_pointer();
} else {
! forwardee = copy_to_survivor_space(obj, m);
}
oopDesc::encode_store_heap_oop(p, forwardee);
} else if (in_cset_state == G1CollectedHeap::IsHumongous) {
_g1h->set_humongous_is_live(obj);
} else {