< prev index next >

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

Print this page

        

*** 28,37 **** --- 28,38 ---- #include "classfile/symbolTable.hpp" #include "code/codeCache.hpp" #include "code/icBuffer.hpp" #include "gc/g1/bufferingOopClosure.hpp" #include "gc/g1/g1Allocator.inline.hpp" + #include "gc/g1/g1BarrierSet.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/g1CollectionSet.hpp" #include "gc/g1/g1CollectorPolicy.hpp" #include "gc/g1/g1CollectorState.hpp" #include "gc/g1/g1ConcurrentRefine.hpp"
*** 1034,1044 **** if (_hot_card_cache->use_cache()) { _hot_card_cache->reset_hot_cache(); } // Discard all remembered set updates. ! JavaThread::dirty_card_queue_set().abandon_logs(); assert(dirty_card_queue_set().completed_buffers_num() == 0, "DCQS should be empty"); } void G1CollectedHeap::verify_after_full_collection() { _hrm.verify_optional(); --- 1035,1045 ---- if (_hot_card_cache->use_cache()) { _hot_card_cache->reset_hot_cache(); } // Discard all remembered set updates. ! G1BarrierSet::dirty_card_queue_set().abandon_logs(); assert(dirty_card_queue_set().completed_buffers_num() == 0, "DCQS should be empty"); } void G1CollectedHeap::verify_after_full_collection() { _hrm.verify_optional();
*** 1634,1647 **** } // Perform any initialization actions delegated to the policy. g1_policy()->init(this, &_collection_set); ! JavaThread::satb_mark_queue_set().initialize(SATB_Q_CBL_mon, ! SATB_Q_FL_lock, ! G1SATBProcessCompletedThreshold, ! Shared_SATB_Q_lock); jint ecode = initialize_concurrent_refinement(); if (ecode != JNI_OK) { return ecode; } --- 1635,1648 ---- } // Perform any initialization actions delegated to the policy. g1_policy()->init(this, &_collection_set); ! G1BarrierSet::satb_mark_queue_set().initialize(SATB_Q_CBL_mon, ! SATB_Q_FL_lock, ! G1SATBProcessCompletedThreshold, ! Shared_SATB_Q_lock); jint ecode = initialize_concurrent_refinement(); if (ecode != JNI_OK) { return ecode; }
*** 1649,1672 **** ecode = initialize_young_gen_sampling_thread(); if (ecode != JNI_OK) { return ecode; } ! JavaThread::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, ! DirtyCardQ_FL_lock, ! (int)concurrent_refine()->yellow_zone(), ! (int)concurrent_refine()->red_zone(), ! Shared_DirtyCardQ_lock, ! NULL, // fl_owner ! true); // init_free_ids dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, DirtyCardQ_FL_lock, -1, // never trigger processing -1, // no limit on length Shared_DirtyCardQ_lock, ! &JavaThread::dirty_card_queue_set()); // Here we allocate the dummy HeapRegion that is required by the // G1AllocRegion class. HeapRegion* dummy_region = _hrm.get_dummy_region(); --- 1650,1673 ---- ecode = initialize_young_gen_sampling_thread(); if (ecode != JNI_OK) { return ecode; } ! G1BarrierSet::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, ! DirtyCardQ_FL_lock, ! (int)concurrent_refine()->yellow_zone(), ! (int)concurrent_refine()->red_zone(), ! Shared_DirtyCardQ_lock, ! NULL, // fl_owner ! true); // init_free_ids dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, DirtyCardQ_FL_lock, -1, // never trigger processing -1, // no limit on length Shared_DirtyCardQ_lock, ! &G1BarrierSet::dirty_card_queue_set()); // Here we allocate the dummy HeapRegion that is required by the // G1AllocRegion class. HeapRegion* dummy_region = _hrm.get_dummy_region();
*** 1831,1841 **** void G1CollectedHeap::iterate_hcc_closure(CardTableEntryClosure* cl, uint worker_i) { _hot_card_cache->drain(cl, worker_i); } void G1CollectedHeap::iterate_dirty_card_closure(CardTableEntryClosure* cl, uint worker_i) { ! DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); size_t n_completed_buffers = 0; while (dcqs.apply_closure_during_gc(cl, worker_i)) { n_completed_buffers++; } g1_policy()->phase_times()->record_thread_work_item(G1GCPhaseTimes::UpdateRS, worker_i, n_completed_buffers); --- 1832,1842 ---- void G1CollectedHeap::iterate_hcc_closure(CardTableEntryClosure* cl, uint worker_i) { _hot_card_cache->drain(cl, worker_i); } void G1CollectedHeap::iterate_dirty_card_closure(CardTableEntryClosure* cl, uint worker_i) { ! DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); size_t n_completed_buffers = 0; while (dcqs.apply_closure_during_gc(cl, worker_i)) { n_completed_buffers++; } g1_policy()->phase_times()->record_thread_work_item(G1GCPhaseTimes::UpdateRS, worker_i, n_completed_buffers);
*** 2465,2475 **** size_t extra_cards = 0; for (JavaThreadIteratorWithHandle jtiwh; JavaThread *curr = jtiwh.next(); ) { DirtyCardQueue& dcq = curr->dirty_card_queue(); extra_cards += dcq.size(); } ! DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); size_t buffer_size = dcqs.buffer_size(); size_t buffer_num = dcqs.completed_buffers_num(); return buffer_size * buffer_num + extra_cards; } --- 2466,2476 ---- size_t extra_cards = 0; for (JavaThreadIteratorWithHandle jtiwh; JavaThread *curr = jtiwh.next(); ) { DirtyCardQueue& dcq = curr->dirty_card_queue(); extra_cards += dcq.size(); } ! DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); size_t buffer_size = dcqs.buffer_size(); size_t buffer_num = dcqs.completed_buffers_num(); return buffer_size * buffer_num + extra_cards; }
*** 2549,2559 **** public: RegisterHumongousWithInCSetFastTestClosure() : _total_humongous(0), _candidate_humongous(0), ! _dcq(&JavaThread::dirty_card_queue_set()) { } virtual bool do_heap_region(HeapRegion* r) { if (!r->is_starts_humongous()) { return false; --- 2550,2560 ---- public: RegisterHumongousWithInCSetFastTestClosure() : _total_humongous(0), _candidate_humongous(0), ! _dcq(&G1BarrierSet::dirty_card_queue_set()) { } virtual bool do_heap_region(HeapRegion* r) { if (!r->is_starts_humongous()) { return false;
*** 3625,3635 **** G1RedirtyLoggedCardsTask redirty_task(&dirty_card_queue_set(), this); dirty_card_queue_set().reset_for_par_iteration(); workers()->run_task(&redirty_task); ! DirtyCardQueueSet& dcq = JavaThread::dirty_card_queue_set(); dcq.merge_bufferlists(&dirty_card_queue_set()); assert(dirty_card_queue_set().completed_buffers_num() == 0, "All should be consumed"); g1_policy()->phase_times()->record_redirty_logged_cards_time_ms((os::elapsedTime() - redirty_logged_cards_start) * 1000.0); } --- 3626,3636 ---- G1RedirtyLoggedCardsTask redirty_task(&dirty_card_queue_set(), this); dirty_card_queue_set().reset_for_par_iteration(); workers()->run_task(&redirty_task); ! DirtyCardQueueSet& dcq = G1BarrierSet::dirty_card_queue_set(); dcq.merge_bufferlists(&dirty_card_queue_set()); assert(dirty_card_queue_set().completed_buffers_num() == 0, "All should be consumed"); g1_policy()->phase_times()->record_redirty_logged_cards_time_ms((os::elapsedTime() - redirty_logged_cards_start) * 1000.0); }
< prev index next >