src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.hpp
Print this page
*** 590,599 ****
--- 590,600 ----
// the current CMS cycle and could lead to stack resizing efforts at
// an opportune future time.
size_t _ser_pmc_preclean_ovflw;
size_t _ser_pmc_remark_ovflw;
size_t _par_pmc_remark_ovflw;
+ size_t _ser_kac_preclean_ovflw;
size_t _ser_kac_ovflw;
size_t _par_kac_ovflw;
NOT_PRODUCT(size_t _num_par_pushes;)
// ("Weak") Reference processing support
*** 1747,1771 ****
// During CMS' weak reference processing, this is a
// work-routine/closure used to complete transitive
// marking of objects as live after a certain point
// in which an initial set has been completely accumulated.
class CMSDrainMarkingStackClosure: public VoidClosure {
CMSCollector* _collector;
MemRegion _span;
CMSMarkStack* _mark_stack;
CMSBitMap* _bit_map;
CMSKeepAliveClosure* _keep_alive;
public:
CMSDrainMarkingStackClosure(CMSCollector* collector, MemRegion span,
CMSBitMap* bit_map, CMSMarkStack* mark_stack,
! CMSKeepAliveClosure* keep_alive):
_collector(collector),
_span(span),
_bit_map(bit_map),
_mark_stack(mark_stack),
! _keep_alive(keep_alive) { }
void do_void();
};
// A parallel version of CMSDrainMarkingStackClosure above.
--- 1748,1781 ----
// During CMS' weak reference processing, this is a
// work-routine/closure used to complete transitive
// marking of objects as live after a certain point
// in which an initial set has been completely accumulated.
+ // This closure is currently used both during the final
+ // remark stop-world phase, as well as during the concurrent
+ // precleaning of the discovered reference lists.
class CMSDrainMarkingStackClosure: public VoidClosure {
CMSCollector* _collector;
MemRegion _span;
CMSMarkStack* _mark_stack;
CMSBitMap* _bit_map;
CMSKeepAliveClosure* _keep_alive;
+ bool _concurrent_precleaning;
public:
CMSDrainMarkingStackClosure(CMSCollector* collector, MemRegion span,
CMSBitMap* bit_map, CMSMarkStack* mark_stack,
! CMSKeepAliveClosure* keep_alive,
! bool concurrent_precleaning):
_collector(collector),
_span(span),
_bit_map(bit_map),
_mark_stack(mark_stack),
! _keep_alive(keep_alive),
! _concurrent_precleaning(concurrent_precleaning) {
! assert(_concurrent_precleaning == _keep_alive->_concurrent_precleaning,
! "Mismatch");
! }
void do_void();
};
// A parallel version of CMSDrainMarkingStackClosure above.