src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp

changeset 887
00b023ae2d78
parent 791
1ee8caae33af
child 952
e9be0e04635a
equal deleted inserted replaced
878:b5e603f2e024 887:00b023ae2d78
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.

mercurial