< prev index next >

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

Print this page

        

*** 25,40 **** #ifndef SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP #define SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP #include "gc/g1/g1ParScanThreadState.hpp" #include "gc/g1/g1RemSet.hpp" #include "oops/oop.inline.hpp" template <class T> void G1ParScanThreadState::do_oop_evac(T* p, HeapRegion* from) { ! assert(!oopDesc::is_null(oopDesc::load_decode_heap_oop(p)), ! "Reference should not be NULL here as such are never pushed to the task queue."); ! oop obj = oopDesc::load_decode_heap_oop_not_null(p); // 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. --- 25,40 ---- #ifndef SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP #define SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP #include "gc/g1/g1ParScanThreadState.hpp" #include "gc/g1/g1RemSet.hpp" + #include "oops/access.inline.hpp" #include "oops/oop.inline.hpp" template <class T> void G1ParScanThreadState::do_oop_evac(T* p, HeapRegion* from) { ! // Reference should not be NULL here as such are never pushed to the task queue. ! oop obj = RawAccess<OOP_NOT_NULL>::oop_load(p); // 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.
*** 44,54 **** if (m->is_marked()) { obj = (oop) m->decode_pointer(); } else { obj = copy_to_survivor_space(in_cset_state, obj, m); } ! oopDesc::encode_store_heap_oop(p, obj); } else if (in_cset_state.is_humongous()) { _g1h->set_humongous_is_live(obj); } else { assert(in_cset_state.is_default(), "In_cset_state must be NotInCSet here, but is " CSETSTATE_FORMAT, in_cset_state.value()); --- 44,54 ---- if (m->is_marked()) { obj = (oop) m->decode_pointer(); } else { obj = copy_to_survivor_space(in_cset_state, obj, m); } ! RawAccess<>::oop_store(p, obj); } else if (in_cset_state.is_humongous()) { _g1h->set_humongous_is_live(obj); } else { assert(in_cset_state.is_default(), "In_cset_state must be NotInCSet here, but is " CSETSTATE_FORMAT, in_cset_state.value());
*** 144,149 **** trim_queue(); } } #endif // SHARE_VM_GC_G1_G1PARSCANTHREADSTATE_INLINE_HPP - --- 144,148 ----
< prev index next >