--- old/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp 2016-04-15 21:13:40.379288340 +0200 +++ new/src/share/vm/gc/g1/g1SATBCardTableModRefBS.cpp 2016-04-15 21:13:40.327289575 +0200 @@ -26,8 +26,8 @@ #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/g1SATBCardTableModRefBS.inline.hpp" #include "gc/g1/heapRegion.hpp" -#include "gc/g1/satbMarkQueue.hpp" #include "gc/shared/memset_with_concurrent_readers.hpp" +#include "gc/shared/satbMarkQueue.hpp" #include "logging/log.hpp" #include "oops/oop.inline.hpp" #include "runtime/atomic.inline.hpp" @@ -41,21 +41,6 @@ CardTableModRefBS(whole_heap, fake_rtti.add_tag(BarrierSet::G1SATBCT)) { } -void G1SATBCardTableModRefBS::enqueue(oop pre_val) { - // Nulls should have been already filtered. - assert(pre_val->is_oop(true), "Error"); - - if (!JavaThread::satb_mark_queue_set().is_active()) return; - Thread* thr = Thread::current(); - if (thr->is_Java_thread()) { - JavaThread* jt = (JavaThread*)thr; - jt->satb_mark_queue().enqueue(pre_val); - } else { - MutexLockerEx x(Shared_SATB_Q_lock, Mutex::_no_safepoint_check_flag); - JavaThread::satb_mark_queue_set().shared_satb_queue()->enqueue(pre_val); - } -} - template void G1SATBCardTableModRefBS::write_ref_array_pre_work(T* dst, int count) { if (!JavaThread::satb_mark_queue_set().is_active()) return; @@ -63,7 +48,7 @@ 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)); + SATBMarkQueue::enqueue(oopDesc::decode_heap_oop_not_null(heap_oop)); } } }