< prev index next >

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

Print this page
rev 53865 : imported patch njt_iterate
rev 53868 : imported patch remove_shared_satb_lock

*** 1674,1685 **** G1BarrierSet::satb_mark_queue_set().initialize(this, SATB_Q_CBL_mon, &bs->satb_mark_queue_buffer_allocator(), G1SATBProcessCompletedThreshold, ! G1SATBBufferEnqueueingThresholdPercent, ! Shared_SATB_Q_lock); // process_completed_buffers_threshold and max_completed_buffers are updated // later, based on the concurrent refinement object. G1BarrierSet::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, &bs->dirty_card_queue_buffer_allocator(), --- 1674,1684 ---- G1BarrierSet::satb_mark_queue_set().initialize(this, SATB_Q_CBL_mon, &bs->satb_mark_queue_buffer_allocator(), G1SATBProcessCompletedThreshold, ! G1SATBBufferEnqueueingThresholdPercent); // process_completed_buffers_threshold and max_completed_buffers are updated // later, based on the concurrent refinement object. G1BarrierSet::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, &bs->dirty_card_queue_buffer_allocator(),
*** 2602,2621 **** CGC_lock->notify(); } } size_t G1CollectedHeap::pending_card_num() { ! size_t extra_cards = 0; ! for (JavaThreadIteratorWithHandle jtiwh; JavaThread *curr = jtiwh.next(); ) { ! G1DirtyCardQueue& dcq = G1ThreadLocalData::dirty_card_queue(curr); ! extra_cards += dcq.size(); } G1DirtyCardQueueSet& 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; } bool G1CollectedHeap::is_potential_eager_reclaim_candidate(HeapRegion* r) const { // We don't nominate objects with many remembered set entries, on // the assumption that such objects are likely still live. --- 2601,2624 ---- CGC_lock->notify(); } } size_t G1CollectedHeap::pending_card_num() { ! struct CountCardsClosure : public ThreadClosure { ! size_t _cards; ! CountCardsClosure() : _cards(0) {} ! virtual void do_thread(Thread* t) { ! _cards += G1ThreadLocalData::dirty_card_queue(t).size(); } + } count_from_threads; + Threads::threads_do(&count_from_threads); + G1DirtyCardQueueSet& 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 + count_from_threads._cards; } bool G1CollectedHeap::is_potential_eager_reclaim_candidate(HeapRegion* r) const { // We don't nominate objects with many remembered set entries, on // the assumption that such objects are likely still live.
< prev index next >