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

changeset 887
00b023ae2d78
parent 578
b5489bb705c9
child 1370
05f89f00a864
child 1424
148e5441d916
     1.1 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp	Wed Nov 19 14:20:51 2008 -0800
     1.2 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/cmsOopClosures.hpp	Thu Nov 20 12:27:41 2008 -0800
     1.3 @@ -325,24 +325,30 @@
     1.4  // For objects in CMS generation, this closure marks
     1.5  // given objects (transitively) as being reachable/live.
     1.6  // This is currently used during the (weak) reference object
     1.7 -// processing phase of the CMS final checkpoint step.
     1.8 +// processing phase of the CMS final checkpoint step, as
     1.9 +// well as during the concurrent precleaning of the discovered
    1.10 +// reference lists.
    1.11  class CMSKeepAliveClosure: public OopClosure {
    1.12   private:
    1.13    CMSCollector* _collector;
    1.14    const MemRegion _span;
    1.15    CMSMarkStack* _mark_stack;
    1.16    CMSBitMap*    _bit_map;
    1.17 +  bool          _concurrent_precleaning;
    1.18   protected:
    1.19    DO_OOP_WORK_DEFN
    1.20   public:
    1.21    CMSKeepAliveClosure(CMSCollector* collector, MemRegion span,
    1.22 -                      CMSBitMap* bit_map, CMSMarkStack* mark_stack):
    1.23 +                      CMSBitMap* bit_map, CMSMarkStack* mark_stack,
    1.24 +                      bool cpc):
    1.25      _collector(collector),
    1.26      _span(span),
    1.27      _bit_map(bit_map),
    1.28 -    _mark_stack(mark_stack) {
    1.29 +    _mark_stack(mark_stack),
    1.30 +    _concurrent_precleaning(cpc) {
    1.31      assert(!_span.is_empty(), "Empty span could spell trouble");
    1.32    }
    1.33 +  bool    concurrent_precleaning() const { return _concurrent_precleaning; }
    1.34    virtual void do_oop(oop* p);
    1.35    virtual void do_oop(narrowOop* p);
    1.36    inline void do_oop_nv(oop* p)       { CMSKeepAliveClosure::do_oop_work(p); }

mercurial