src/share/vm/gc_implementation/g1/g1ParScanThreadState.inline.hpp

Print this page
rev 6719 : imported patch fast-reclaim-main-patch
rev 6721 : [mq]: fixes1
rev 6722 : [mq]: fixes-mikael2

*** 50,69 **** // Although we never intentionally push references outside of the collection // set, due to (benign) races in the claim mechanism during RSet scanning more // than one thread might claim the same card. So the same card may be // processed multiple times. So redo this check. ! if (_g1h->is_in_cset_or_humongous(obj)) { oop forwardee; if (obj->is_forwarded()) { forwardee = obj->forwardee(); } else { forwardee = copy_to_survivor_space(obj); } - if (forwardee != NULL) { oopDesc::encode_store_heap_oop(p, forwardee); ! } } assert(obj != NULL, "Must be"); update_rs(from, p, queue_num()); } --- 50,73 ---- // Although we never intentionally push references outside of the collection // set, due to (benign) races in the claim mechanism during RSet scanning more // 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 { ! assert(in_cset_state == G1CollectedHeap::InNeither, ! err_msg("In_cset_state must be InNeither here, but is %d", in_cset_state)); } assert(obj != NULL, "Must be"); update_rs(from, p, queue_num()); }