497 class CMSRefProcTaskExecutor: public AbstractRefProcTaskExecutor { 498 public: 499 500 CMSRefProcTaskExecutor(CMSCollector& collector) 501 : _collector(collector) 502 { } 503 504 // Executes a task using worker threads. 505 virtual void execute(ProcessTask& task); 506 virtual void execute(EnqueueTask& task); 507 private: 508 CMSCollector& _collector; 509 }; 510 511 512 class CMSCollector: public CHeapObj<mtGC> { 513 friend class VMStructs; 514 friend class ConcurrentMarkSweepThread; 515 friend class ConcurrentMarkSweepGeneration; 516 friend class CompactibleFreeListSpace; 517 friend class CMSParRemarkTask; 518 friend class CMSConcMarkingTask; 519 friend class CMSRefProcTaskProxy; 520 friend class CMSRefProcTaskExecutor; 521 friend class ScanMarkedObjectsAgainCarefullyClosure; // for sampling eden 522 friend class SurvivorSpacePrecleanClosure; // --- ditto ------- 523 friend class PushOrMarkClosure; // to access _restart_addr 524 friend class Par_PushOrMarkClosure; // to access _restart_addr 525 friend class MarkFromRootsClosure; // -- ditto -- 526 // ... and for clearing cards 527 friend class Par_MarkFromRootsClosure; // to access _restart_addr 528 // ... and for clearing cards 529 friend class Par_ConcMarkingClosure; // to access _restart_addr etc. 530 friend class MarkFromRootsVerifyClosure; // to access _restart_addr 531 friend class PushAndMarkVerifyClosure; // -- ditto -- 532 friend class MarkRefsIntoAndScanClosure; // to access _overflow_list 533 friend class PushAndMarkClosure; // -- ditto -- 534 friend class Par_PushAndMarkClosure; // -- ditto -- 535 friend class CMSKeepAliveClosure; // -- ditto -- 536 friend class CMSDrainMarkingStackClosure; // -- ditto -- | 497 class CMSRefProcTaskExecutor: public AbstractRefProcTaskExecutor { 498 public: 499 500 CMSRefProcTaskExecutor(CMSCollector& collector) 501 : _collector(collector) 502 { } 503 504 // Executes a task using worker threads. 505 virtual void execute(ProcessTask& task); 506 virtual void execute(EnqueueTask& task); 507 private: 508 CMSCollector& _collector; 509 }; 510 511 512 class CMSCollector: public CHeapObj<mtGC> { 513 friend class VMStructs; 514 friend class ConcurrentMarkSweepThread; 515 friend class ConcurrentMarkSweepGeneration; 516 friend class CompactibleFreeListSpace; 517 friend class CMSParMarkTask; 518 friend class CMSParInitialMarkTask; 519 friend class CMSParRemarkTask; 520 friend class CMSConcMarkingTask; 521 friend class CMSRefProcTaskProxy; 522 friend class CMSRefProcTaskExecutor; 523 friend class ScanMarkedObjectsAgainCarefullyClosure; // for sampling eden 524 friend class SurvivorSpacePrecleanClosure; // --- ditto ------- 525 friend class PushOrMarkClosure; // to access _restart_addr 526 friend class Par_PushOrMarkClosure; // to access _restart_addr 527 friend class MarkFromRootsClosure; // -- ditto -- 528 // ... and for clearing cards 529 friend class Par_MarkFromRootsClosure; // to access _restart_addr 530 // ... and for clearing cards 531 friend class Par_ConcMarkingClosure; // to access _restart_addr etc. 532 friend class MarkFromRootsVerifyClosure; // to access _restart_addr 533 friend class PushAndMarkVerifyClosure; // -- ditto -- 534 friend class MarkRefsIntoAndScanClosure; // to access _overflow_list 535 friend class PushAndMarkClosure; // -- ditto -- 536 friend class Par_PushAndMarkClosure; // -- ditto -- 537 friend class CMSKeepAliveClosure; // -- ditto -- 538 friend class CMSDrainMarkingStackClosure; // -- ditto -- |