590 // the current CMS cycle and could lead to stack resizing efforts at |
590 // the current CMS cycle and could lead to stack resizing efforts at |
591 // an opportune future time. |
591 // an opportune future time. |
592 size_t _ser_pmc_preclean_ovflw; |
592 size_t _ser_pmc_preclean_ovflw; |
593 size_t _ser_pmc_remark_ovflw; |
593 size_t _ser_pmc_remark_ovflw; |
594 size_t _par_pmc_remark_ovflw; |
594 size_t _par_pmc_remark_ovflw; |
|
595 size_t _ser_kac_preclean_ovflw; |
595 size_t _ser_kac_ovflw; |
596 size_t _ser_kac_ovflw; |
596 size_t _par_kac_ovflw; |
597 size_t _par_kac_ovflw; |
597 NOT_PRODUCT(size_t _num_par_pushes;) |
598 NOT_PRODUCT(size_t _num_par_pushes;) |
598 |
599 |
599 // ("Weak") Reference processing support |
600 // ("Weak") Reference processing support |
1747 |
1748 |
1748 // During CMS' weak reference processing, this is a |
1749 // During CMS' weak reference processing, this is a |
1749 // work-routine/closure used to complete transitive |
1750 // work-routine/closure used to complete transitive |
1750 // marking of objects as live after a certain point |
1751 // marking of objects as live after a certain point |
1751 // in which an initial set has been completely accumulated. |
1752 // in which an initial set has been completely accumulated. |
|
1753 // This closure is currently used both during the final |
|
1754 // remark stop-world phase, as well as during the concurrent |
|
1755 // precleaning of the discovered reference lists. |
1752 class CMSDrainMarkingStackClosure: public VoidClosure { |
1756 class CMSDrainMarkingStackClosure: public VoidClosure { |
1753 CMSCollector* _collector; |
1757 CMSCollector* _collector; |
1754 MemRegion _span; |
1758 MemRegion _span; |
1755 CMSMarkStack* _mark_stack; |
1759 CMSMarkStack* _mark_stack; |
1756 CMSBitMap* _bit_map; |
1760 CMSBitMap* _bit_map; |
1757 CMSKeepAliveClosure* _keep_alive; |
1761 CMSKeepAliveClosure* _keep_alive; |
|
1762 bool _concurrent_precleaning; |
1758 public: |
1763 public: |
1759 CMSDrainMarkingStackClosure(CMSCollector* collector, MemRegion span, |
1764 CMSDrainMarkingStackClosure(CMSCollector* collector, MemRegion span, |
1760 CMSBitMap* bit_map, CMSMarkStack* mark_stack, |
1765 CMSBitMap* bit_map, CMSMarkStack* mark_stack, |
1761 CMSKeepAliveClosure* keep_alive): |
1766 CMSKeepAliveClosure* keep_alive, |
|
1767 bool cpc): |
1762 _collector(collector), |
1768 _collector(collector), |
1763 _span(span), |
1769 _span(span), |
1764 _bit_map(bit_map), |
1770 _bit_map(bit_map), |
1765 _mark_stack(mark_stack), |
1771 _mark_stack(mark_stack), |
1766 _keep_alive(keep_alive) { } |
1772 _keep_alive(keep_alive), |
|
1773 _concurrent_precleaning(cpc) { |
|
1774 assert(_concurrent_precleaning == _keep_alive->concurrent_precleaning(), |
|
1775 "Mismatch"); |
|
1776 } |
1767 |
1777 |
1768 void do_void(); |
1778 void do_void(); |
1769 }; |
1779 }; |
1770 |
1780 |
1771 // A parallel version of CMSDrainMarkingStackClosure above. |
1781 // A parallel version of CMSDrainMarkingStackClosure above. |