< prev index next >

src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.hpp

Print this page
rev 49944 : imported patch 8201492-properly-implement-non-contiguous-reference-processing
rev 49945 : imported patch 8201492-stefanj-review

@@ -615,11 +615,11 @@
   void save_heap_summary();
   void report_heap_summary(GCWhen::Type when);
 
  protected:
   ConcurrentMarkSweepGeneration* _cmsGen;  // Old gen (CMS)
-  MemRegion                      _span;    // Span covering above two
+  MemRegion                      _span;    // Span covering above
   CardTableRS*                   _ct;      // Card table
 
   // CMS marking support structures
   CMSBitMap     _markBitMap;
   CMSBitMap     _modUnionTable;

@@ -639,11 +639,12 @@
   size_t        _ser_kac_ovflw;
   size_t        _par_kac_ovflw;
   NOT_PRODUCT(ssize_t _num_par_pushes;)
 
   // ("Weak") Reference processing support.
-  SpanReferenceProcessor*        _ref_processor;
+  SpanSubjectToDiscoveryClosure _span_discoverer;
+  ReferenceProcessor*           _ref_processor;
   CMSIsAliveClosure              _is_alive_closure;
   // Keep this textually after _markBitMap and _span; c'tor dependency.
 
   ConcurrentMarkSweepThread*     _cmsThread;   // The thread doing the work
   ModUnionClosurePar _modUnionClosurePar;

@@ -839,11 +840,12 @@
   CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
                CardTableRS*                   ct,
                ConcurrentMarkSweepPolicy*     cp);
   ConcurrentMarkSweepThread* cmsThread() { return _cmsThread; }
 
-  SpanReferenceProcessor* ref_processor() { return _ref_processor; }
+  MemRegion ref_processor_span() const { return _span_discoverer.span(); }
+  ReferenceProcessor* ref_processor() { return _ref_processor; }
   void ref_processor_init();
 
   Mutex* bitMapLock()        const { return _markBitMap.lock();    }
   static CollectorState abstract_state() { return _collectorState;  }
 
< prev index next >