--- old/src/share/vm/gc/g1/g1ConcurrentMark.cpp 2017-04-25 16:44:35.187175186 +0200 +++ new/src/share/vm/gc/g1/g1ConcurrentMark.cpp 2017-04-25 16:44:35.039175191 +0200 @@ -27,6 +27,7 @@ #include "classfile/symbolTable.hpp" #include "code/codeCache.hpp" #include "gc/g1/concurrentMarkThread.inline.hpp" +#include "gc/g1/g1BarrierSet.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/g1CollectorState.hpp" #include "gc/g1/g1ConcurrentMark.inline.hpp" @@ -446,7 +447,7 @@ assert(_markBitMap1.covers(g1h->reserved_region()), "_markBitMap1 inconsistency"); assert(_markBitMap2.covers(g1h->reserved_region()), "_markBitMap2 inconsistency"); - SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set(); + SATBMarkQueueSet& satb_qs = G1BarrierSet::satb_mark_queue_set(); satb_qs.set_buffer_size(G1SATBBufferSize); _root_regions.init(_g1h->survivor(), this); @@ -811,7 +812,7 @@ rp->enable_discovery(); rp->setup_policy(false); // snapshot the soft ref policy to be used in this cycle - SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set(); + SATBMarkQueueSet& satb_mq_set = G1BarrierSet::satb_mark_queue_set(); // This is the start of the marking cycle, we're expected all // threads to have SATB queues with active set to false. satb_mq_set.set_active_all_threads(true, /* new active value */ @@ -1140,7 +1141,7 @@ // marking due to overflowing the global mark stack. reset_marking_state(); } else { - SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set(); + SATBMarkQueueSet& satb_mq_set = G1BarrierSet::satb_mark_queue_set(); // We're done with marking. // This is the end of the marking cycle, we're expected all // threads to have SATB queues with active set to true. @@ -1839,7 +1840,7 @@ } } else if (thread->is_VM_thread()) { if (thread->claim_oops_do(true, _thread_parity)) { - JavaThread::satb_mark_queue_set().shared_satb_queue()->apply_closure_and_empty(&_cm_satb_cl); + G1BarrierSet::satb_mark_queue_set().shared_satb_queue()->apply_closure_and_empty(&_cm_satb_cl); } } } @@ -1907,7 +1908,7 @@ g1h->workers()->run_task(&remarkTask); } - SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set(); + SATBMarkQueueSet& satb_mq_set = G1BarrierSet::satb_mark_queue_set(); guarantee(has_overflown() || satb_mq_set.completed_buffers_num() == 0, "Invariant: has_overflown = %s, num buffers = " SIZE_FORMAT, @@ -2106,7 +2107,7 @@ _second_overflow_barrier_sync.abort(); _has_aborted = true; - SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set(); + SATBMarkQueueSet& satb_mq_set = G1BarrierSet::satb_mark_queue_set(); satb_mq_set.abandon_partial_marking(); // This can be called either during or outside marking, we'll read // the expected_active value from the SATB queue set. @@ -2347,7 +2348,7 @@ // (6) Finally, we check whether there are enough completed STAB // buffers available for processing. If there are, we abort. - SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set(); + SATBMarkQueueSet& satb_mq_set = G1BarrierSet::satb_mark_queue_set(); if (!_draining_satb_buffers && satb_mq_set.process_completed_buffers()) { // we do need to process SATB buffers, we'll abort and restart // the marking task to do so @@ -2500,7 +2501,7 @@ _draining_satb_buffers = true; G1CMSATBBufferClosure satb_cl(this, _g1h); - SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set(); + SATBMarkQueueSet& satb_mq_set = G1BarrierSet::satb_mark_queue_set(); // This keeps claiming and applying the closure to completed buffers // until we run out of buffers or we need to abort.