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

Print this page

        

@@ -514,10 +514,12 @@
 class CMSCollector: public CHeapObj<mtGC> {
   friend class VMStructs;
   friend class ConcurrentMarkSweepThread;
   friend class ConcurrentMarkSweepGeneration;
   friend class CompactibleFreeListSpace;
+  friend class CMSParMarkTask;
+  friend class CMSParInitialMarkTask;
   friend class CMSParRemarkTask;
   friend class CMSConcMarkingTask;
   friend class CMSRefProcTaskProxy;
   friend class CMSRefProcTaskExecutor;
   friend class ScanMarkedObjectsAgainCarefullyClosure;  // for sampling eden

@@ -750,10 +752,11 @@
  private:
   // Support for parallelizing young gen rescan in CMS remark phase
   Generation* _young_gen;  // the younger gen
   HeapWord** _top_addr;    // ... Top of Eden
   HeapWord** _end_addr;    // ... End of Eden
+  Mutex*     _eden_chunk_lock;
   HeapWord** _eden_chunk_array; // ... Eden partitioning array
   size_t     _eden_chunk_index; // ... top (exclusive) of array
   size_t     _eden_chunk_capacity;  // ... max entries in array
 
   // Support for parallelizing survivor space rescan

@@ -951,10 +954,11 @@
     }
   }
 
   // Support for parallel remark of survivor space
   void* get_data_recorder(int thr_num);
+  void sample_eden_chunk();
 
   CMSBitMap* markBitMap()  { return &_markBitMap; }
   void directAllocated(HeapWord* start, size_t size);
 
   // main CMS steps and related support

@@ -1029,10 +1033,12 @@
   // Get the bit map with a perm gen "deadness" information.
   CMSBitMap* perm_gen_verify_bit_map()       { return &_perm_gen_verify_bit_map; }
 
   // Initialization errors
   bool completed_initialization() { return _completed_initialization; }
+
+  void print_eden_and_survivor_chunk_arrays();
 };
 
 class CMSExpansionCause : public AllStatic  {
  public:
   enum Cause {

@@ -1315,10 +1321,14 @@
   // Support for parallel remark of survivor space
   void* get_data_recorder(int thr_num) {
     //Delegate to collector
     return collector()->get_data_recorder(thr_num);
   }
+  void sample_eden_chunk() {
+    //Delegate to collector
+    return collector()->sample_eden_chunk();
+  }
 
   // Printing
   const char* name() const;
   virtual const char* short_name() const { return "CMS"; }
   void        print() const;