< prev index next >

src/hotspot/share/gc/g1/g1BarrierSet.cpp

Print this page

        

*** 27,36 **** --- 27,38 ---- #include "gc/g1/g1CardTable.inline.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/heapRegion.hpp" #include "gc/g1/satbMarkQueue.hpp" #include "logging/log.hpp" + #include "oops/access.inline.hpp" + #include "oops/compressedOops.inline.hpp" #include "oops/oop.inline.hpp" #include "runtime/mutexLocker.hpp" #include "runtime/thread.inline.hpp" G1BarrierSet::G1BarrierSet(G1CardTable* card_table) :
*** 56,68 **** template <class T> void G1BarrierSet::write_ref_array_pre_work(T* dst, int count) { if (!JavaThread::satb_mark_queue_set().is_active()) return; T* elem_ptr = dst; for (int i = 0; i < count; i++, elem_ptr++) { ! T heap_oop = oopDesc::load_heap_oop(elem_ptr); ! if (!oopDesc::is_null(heap_oop)) { ! enqueue(oopDesc::decode_heap_oop_not_null(heap_oop)); } } } void G1BarrierSet::write_ref_array_pre(oop* dst, int count, bool dest_uninitialized) { --- 58,70 ---- template <class T> void G1BarrierSet::write_ref_array_pre_work(T* dst, int count) { if (!JavaThread::satb_mark_queue_set().is_active()) return; T* elem_ptr = dst; for (int i = 0; i < count; i++, elem_ptr++) { ! T heap_oop = RawAccess<>::oop_load(elem_ptr); ! if (!CompressedOops::is_null(heap_oop)) { ! enqueue(CompressedOops::decode_not_null(heap_oop)); } } } void G1BarrierSet::write_ref_array_pre(oop* dst, int count, bool dest_uninitialized) {
< prev index next >