equal
deleted
inserted
replaced
1079 _hot_card_cache->reset_hot_cache(); |
1079 _hot_card_cache->reset_hot_cache(); |
1080 } |
1080 } |
1081 |
1081 |
1082 // Discard all remembered set updates. |
1082 // Discard all remembered set updates. |
1083 G1BarrierSet::dirty_card_queue_set().abandon_logs(); |
1083 G1BarrierSet::dirty_card_queue_set().abandon_logs(); |
1084 assert(G1BarrierSet::dirty_card_queue_set().num_completed_buffers() == 0, |
1084 assert(G1BarrierSet::dirty_card_queue_set().num_cards() == 0, |
1085 "DCQS should be empty"); |
1085 "DCQS should be empty"); |
1086 } |
1086 } |
1087 |
1087 |
1088 void G1CollectedHeap::verify_after_full_collection() { |
1088 void G1CollectedHeap::verify_after_full_collection() { |
1089 _hrm->verify_optional(); |
1089 _hrm->verify_optional(); |
1682 G1BarrierSet::satb_mark_queue_set().initialize(this, |
1682 G1BarrierSet::satb_mark_queue_set().initialize(this, |
1683 &bs->satb_mark_queue_buffer_allocator(), |
1683 &bs->satb_mark_queue_buffer_allocator(), |
1684 G1SATBProcessCompletedThreshold, |
1684 G1SATBProcessCompletedThreshold, |
1685 G1SATBBufferEnqueueingThresholdPercent); |
1685 G1SATBBufferEnqueueingThresholdPercent); |
1686 |
1686 |
1687 // process_completed_buffers_threshold and max_completed_buffers are updated |
1687 // process_cards_threshold and max_cards are updated |
1688 // later, based on the concurrent refinement object. |
1688 // later, based on the concurrent refinement object. |
1689 G1BarrierSet::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, |
1689 G1BarrierSet::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon, |
1690 &bs->dirty_card_queue_buffer_allocator(), |
1690 &bs->dirty_card_queue_buffer_allocator(), |
1691 true); // init_free_ids |
1691 true); // init_free_ids |
1692 |
1692 |
1811 return ecode; |
1811 return ecode; |
1812 } |
1812 } |
1813 |
1813 |
1814 { |
1814 { |
1815 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); |
1815 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); |
1816 dcqs.set_process_completed_buffers_threshold(concurrent_refine()->yellow_zone()); |
1816 dcqs.set_process_cards_threshold(concurrent_refine()->yellow_zone()); |
1817 dcqs.set_max_completed_buffers(concurrent_refine()->red_zone()); |
1817 dcqs.set_max_cards(concurrent_refine()->red_zone()); |
1818 } |
1818 } |
1819 |
1819 |
1820 // Here we allocate the dummy HeapRegion that is required by the |
1820 // Here we allocate the dummy HeapRegion that is required by the |
1821 // G1AllocRegion class. |
1821 // G1AllocRegion class. |
1822 HeapRegion* dummy_region = _hrm->get_dummy_region(); |
1822 HeapRegion* dummy_region = _hrm->get_dummy_region(); |
1951 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); |
1951 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); |
1952 size_t n_completed_buffers = 0; |
1952 size_t n_completed_buffers = 0; |
1953 while (dcqs.apply_closure_during_gc(cl, worker_i)) { |
1953 while (dcqs.apply_closure_during_gc(cl, worker_i)) { |
1954 n_completed_buffers++; |
1954 n_completed_buffers++; |
1955 } |
1955 } |
1956 assert(dcqs.num_completed_buffers() == 0, "Completed buffers exist!"); |
1956 assert(dcqs.num_cards() == 0, "Completed buffers exist!"); |
1957 phase_times()->record_thread_work_item(G1GCPhaseTimes::MergeLB, worker_i, n_completed_buffers, G1GCPhaseTimes::MergeLBProcessedBuffers); |
1957 phase_times()->record_thread_work_item(G1GCPhaseTimes::MergeLB, worker_i, n_completed_buffers, G1GCPhaseTimes::MergeLBProcessedBuffers); |
1958 } |
1958 } |
1959 |
1959 |
1960 // Computes the sum of the storage used by the various regions. |
1960 // Computes the sum of the storage used by the various regions. |
1961 size_t G1CollectedHeap::used() const { |
1961 size_t G1CollectedHeap::used() const { |
2617 } |
2617 } |
2618 } count_from_threads; |
2618 } count_from_threads; |
2619 Threads::threads_do(&count_from_threads); |
2619 Threads::threads_do(&count_from_threads); |
2620 |
2620 |
2621 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); |
2621 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); |
2622 dcqs.verify_num_entries_in_completed_buffers(); |
2622 dcqs.verify_num_cards(); |
2623 |
2623 |
2624 return dcqs.num_entries_in_completed_buffers() + count_from_threads._cards; |
2624 return dcqs.num_cards() + count_from_threads._cards; |
2625 } |
2625 } |
2626 |
2626 |
2627 bool G1CollectedHeap::is_potential_eager_reclaim_candidate(HeapRegion* r) const { |
2627 bool G1CollectedHeap::is_potential_eager_reclaim_candidate(HeapRegion* r) const { |
2628 // We don't nominate objects with many remembered set entries, on |
2628 // We don't nominate objects with many remembered set entries, on |
2629 // the assumption that such objects are likely still live. |
2629 // the assumption that such objects are likely still live. |