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
|