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

Print this page




 490   friend class PushOrMarkClosure;             // to access _restart_addr
 491   friend class Par_PushOrMarkClosure;             // to access _restart_addr
 492   friend class MarkFromRootsClosure;          //  -- ditto --
 493                                               // ... and for clearing cards
 494   friend class Par_MarkFromRootsClosure;      //  to access _restart_addr
 495                                               // ... and for clearing cards
 496   friend class Par_ConcMarkingClosure;        //  to access _restart_addr etc.
 497   friend class MarkFromRootsVerifyClosure;    // to access _restart_addr
 498   friend class PushAndMarkVerifyClosure;      //  -- ditto --
 499   friend class MarkRefsIntoAndScanClosure;    // to access _overflow_list
 500   friend class PushAndMarkClosure;            //  -- ditto --
 501   friend class Par_PushAndMarkClosure;        //  -- ditto --
 502   friend class CMSKeepAliveClosure;           //  -- ditto --
 503   friend class CMSDrainMarkingStackClosure;   //  -- ditto --
 504   friend class CMSInnerParMarkAndPushClosure; //  -- ditto --
 505   NOT_PRODUCT(friend class ScanMarkedObjectsAgainClosure;) //  assertion on _overflow_list
 506   friend class ReleaseForegroundGC;  // to access _foregroundGCShouldWait
 507   friend class VM_CMS_Operation;
 508   friend class VM_CMS_Initial_Mark;
 509   friend class VM_CMS_Final_Remark;

 510 
 511  private:
 512   jlong _time_of_last_gc;
 513   void update_time_of_last_gc(jlong now) {
 514     _time_of_last_gc = now;
 515   }
 516 
 517   OopTaskQueueSet* _task_queues;
 518 
 519   // Overflow list of grey objects, threaded through mark-word
 520   // Manipulated with CAS in the parallel/multi-threaded case.
 521   oop _overflow_list;
 522   // The following array-pair keeps track of mark words
 523   // displaced for accomodating overflow list above.
 524   // This code will likely be revisited under RFE#4922830.
 525   GrowableArray<oop>*     _preserved_oop_stack;
 526   GrowableArray<markOop>* _preserved_mark_stack;
 527 
 528   int*             _hash_seed;
 529 


1841   }
1842 };
1843 
1844 // Mark all dead objects in a given space.
1845 class MarkDeadObjectsClosure: public BlkClosure {
1846   const CMSCollector*             _collector;
1847   const CompactibleFreeListSpace* _sp;
1848   CMSBitMap*                      _live_bit_map;
1849   CMSBitMap*                      _dead_bit_map;
1850 public:
1851   MarkDeadObjectsClosure(const CMSCollector* collector,
1852                          const CompactibleFreeListSpace* sp,
1853                          CMSBitMap *live_bit_map,
1854                          CMSBitMap *dead_bit_map) :
1855     _collector(collector),
1856     _sp(sp),
1857     _live_bit_map(live_bit_map),
1858     _dead_bit_map(dead_bit_map) {}
1859   size_t do_blk(HeapWord* addr);
1860 };










 490   friend class PushOrMarkClosure;             // to access _restart_addr
 491   friend class Par_PushOrMarkClosure;             // to access _restart_addr
 492   friend class MarkFromRootsClosure;          //  -- ditto --
 493                                               // ... and for clearing cards
 494   friend class Par_MarkFromRootsClosure;      //  to access _restart_addr
 495                                               // ... and for clearing cards
 496   friend class Par_ConcMarkingClosure;        //  to access _restart_addr etc.
 497   friend class MarkFromRootsVerifyClosure;    // to access _restart_addr
 498   friend class PushAndMarkVerifyClosure;      //  -- ditto --
 499   friend class MarkRefsIntoAndScanClosure;    // to access _overflow_list
 500   friend class PushAndMarkClosure;            //  -- ditto --
 501   friend class Par_PushAndMarkClosure;        //  -- ditto --
 502   friend class CMSKeepAliveClosure;           //  -- ditto --
 503   friend class CMSDrainMarkingStackClosure;   //  -- ditto --
 504   friend class CMSInnerParMarkAndPushClosure; //  -- ditto --
 505   NOT_PRODUCT(friend class ScanMarkedObjectsAgainClosure;) //  assertion on _overflow_list
 506   friend class ReleaseForegroundGC;  // to access _foregroundGCShouldWait
 507   friend class VM_CMS_Operation;
 508   friend class VM_CMS_Initial_Mark;
 509   friend class VM_CMS_Final_Remark;
 510   friend class TraceCMSMemoryManagerStats;
 511 
 512  private:
 513   jlong _time_of_last_gc;
 514   void update_time_of_last_gc(jlong now) {
 515     _time_of_last_gc = now;
 516   }
 517 
 518   OopTaskQueueSet* _task_queues;
 519 
 520   // Overflow list of grey objects, threaded through mark-word
 521   // Manipulated with CAS in the parallel/multi-threaded case.
 522   oop _overflow_list;
 523   // The following array-pair keeps track of mark words
 524   // displaced for accomodating overflow list above.
 525   // This code will likely be revisited under RFE#4922830.
 526   GrowableArray<oop>*     _preserved_oop_stack;
 527   GrowableArray<markOop>* _preserved_mark_stack;
 528 
 529   int*             _hash_seed;
 530 


1842   }
1843 };
1844 
1845 // Mark all dead objects in a given space.
1846 class MarkDeadObjectsClosure: public BlkClosure {
1847   const CMSCollector*             _collector;
1848   const CompactibleFreeListSpace* _sp;
1849   CMSBitMap*                      _live_bit_map;
1850   CMSBitMap*                      _dead_bit_map;
1851 public:
1852   MarkDeadObjectsClosure(const CMSCollector* collector,
1853                          const CompactibleFreeListSpace* sp,
1854                          CMSBitMap *live_bit_map,
1855                          CMSBitMap *dead_bit_map) :
1856     _collector(collector),
1857     _sp(sp),
1858     _live_bit_map(live_bit_map),
1859     _dead_bit_map(dead_bit_map) {}
1860   size_t do_blk(HeapWord* addr);
1861 };
1862 
1863 class TraceCMSMemoryManagerStats : public TraceMemoryManagerStats {
1864 
1865  public:
1866   TraceCMSMemoryManagerStats(CMSCollector::CollectorState phase);
1867   TraceCMSMemoryManagerStats();
1868 };
1869