< prev index next >

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

Print this page

        

*** 24,33 **** --- 24,34 ---- #include "precompiled.hpp" #include "classfile/metadataOnStackMark.hpp" #include "classfile/symbolTable.hpp" #include "code/codeCache.hpp" + #include "gc/g1/g1BarrierSet.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/g1CollectorState.hpp" #include "gc/g1/g1ConcurrentMark.inline.hpp" #include "gc/g1/g1ConcurrentMarkThread.inline.hpp" #include "gc/g1/g1HeapVerifier.hpp"
*** 403,413 **** vm_shutdown_during_initialization("Could not create ConcurrentMarkThread"); } assert(CGC_lock != NULL, "CGC_lock must be initialized"); ! SATBMarkQueueSet& satb_qs = JavaThread::satb_mark_queue_set(); satb_qs.set_buffer_size(G1SATBBufferSize); _root_regions.init(_g1h->survivor(), this); if (FLAG_IS_DEFAULT(ConcGCThreads) || ConcGCThreads == 0) { --- 404,414 ---- vm_shutdown_during_initialization("Could not create ConcurrentMarkThread"); } assert(CGC_lock != NULL, "CGC_lock must be initialized"); ! SATBMarkQueueSet& satb_qs = G1BarrierSet::satb_mark_queue_set(); satb_qs.set_buffer_size(G1SATBBufferSize); _root_regions.init(_g1h->survivor(), this); if (FLAG_IS_DEFAULT(ConcGCThreads) || ConcGCThreads == 0) {
*** 755,765 **** ReferenceProcessor* rp = _g1h->ref_processor_cm(); // enable ("weak") refs discovery 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(); // 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 */ false /* expected_active */); --- 756,766 ---- ReferenceProcessor* rp = _g1h->ref_processor_cm(); // enable ("weak") refs discovery rp->enable_discovery(); rp->setup_policy(false); // snapshot the soft ref policy to be used in this cycle ! 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 */ false /* expected_active */);
*** 1066,1076 **** bool const mark_finished = !has_overflown(); if (mark_finished) { weak_refs_work(false /* clear_all_soft_refs */); ! SATBMarkQueueSet& satb_mq_set = JavaThread::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. satb_mq_set.set_active_all_threads(false, /* new active value */ true /* expected_active */); --- 1067,1077 ---- bool const mark_finished = !has_overflown(); if (mark_finished) { weak_refs_work(false /* clear_all_soft_refs */); ! 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. satb_mq_set.set_active_all_threads(false, /* new active value */ true /* expected_active */);
*** 1688,1698 **** jt->satb_mark_queue().apply_closure_and_empty(&_cm_satb_cl); } } 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); } } } }; --- 1689,1699 ---- jt->satb_mark_queue().apply_closure_and_empty(&_cm_satb_cl); } } else if (thread->is_VM_thread()) { if (thread->claim_oops_do(true, _thread_parity)) { ! G1BarrierSet::satb_mark_queue_set().shared_satb_queue()->apply_closure_and_empty(&_cm_satb_cl); } } } };
*** 1748,1758 **** // active_workers will be fewer. The extra ones will just bail out // immediately. _g1h->workers()->run_task(&remarkTask); } ! SATBMarkQueueSet& satb_mq_set = JavaThread::satb_mark_queue_set(); guarantee(has_overflown() || satb_mq_set.completed_buffers_num() == 0, "Invariant: has_overflown = %s, num buffers = " SIZE_FORMAT, BOOL_TO_STR(has_overflown()), satb_mq_set.completed_buffers_num()); --- 1749,1759 ---- // active_workers will be fewer. The extra ones will just bail out // immediately. _g1h->workers()->run_task(&remarkTask); } ! 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, BOOL_TO_STR(has_overflown()), satb_mq_set.completed_buffers_num());
*** 1930,1940 **** } _first_overflow_barrier_sync.abort(); _second_overflow_barrier_sync.abort(); _has_aborted = true; ! SATBMarkQueueSet& satb_mq_set = JavaThread::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. satb_mq_set.set_active_all_threads( false, /* new active value */ --- 1931,1941 ---- } _first_overflow_barrier_sync.abort(); _second_overflow_barrier_sync.abort(); _has_aborted = true; ! 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. satb_mq_set.set_active_all_threads( false, /* new active value */
*** 2140,2150 **** return; } // (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(); 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 set_has_aborted(); return; --- 2141,2151 ---- return; } // (6) Finally, we check whether there are enough completed STAB // buffers available for processing. If there are, we abort. ! 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 set_has_aborted(); return;
*** 2295,2305 **** // notices that SATB buffers are available for draining. It'd be // very counter productive if it did that. :-) _draining_satb_buffers = true; G1CMSATBBufferClosure satb_cl(this, _g1h); ! SATBMarkQueueSet& satb_mq_set = JavaThread::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. while (!has_aborted() && satb_mq_set.apply_closure_to_completed_buffer(&satb_cl)) { --- 2296,2306 ---- // notices that SATB buffers are available for draining. It'd be // very counter productive if it did that. :-) _draining_satb_buffers = true; G1CMSATBBufferClosure satb_cl(this, _g1h); ! 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. while (!has_aborted() && satb_mq_set.apply_closure_to_completed_buffer(&satb_cl)) {
< prev index next >