523 friend class CMSKeepAliveClosure; // -- ditto --
524 friend class CMSDrainMarkingStackClosure; // -- ditto --
525 friend class CMSInnerParMarkAndPushClosure; // -- ditto --
526 NOT_PRODUCT(friend class ScanMarkedObjectsAgainClosure;) // assertion on _overflow_list
527 friend class ReleaseForegroundGC; // to access _foregroundGCShouldWait
528 friend class VM_CMS_Operation;
529 friend class VM_CMS_Initial_Mark;
530 friend class VM_CMS_Final_Remark;
531 friend class TraceCMSMemoryManagerStats;
532
533 private:
534 jlong _time_of_last_gc;
535 void update_time_of_last_gc(jlong now) {
536 _time_of_last_gc = now;
537 }
538
539 OopTaskQueueSet* _task_queues;
540
541 // Overflow list of grey objects, threaded through mark-word
542 // Manipulated with CAS in the parallel/multi-threaded case.
543 oop _overflow_list;
544 // The following array-pair keeps track of mark words
545 // displaced for accommodating overflow list above.
546 // This code will likely be revisited under RFE#4922830.
547 Stack<oop, mtGC> _preserved_oop_stack;
548 Stack<markOop, mtGC> _preserved_mark_stack;
549
550 int* _hash_seed;
551
552 // In support of multi-threaded concurrent phases
553 YieldingFlexibleWorkGang* _conc_workers;
554
555 // Performance Counters
556 CollectorCounters* _gc_counters;
557
558 // Initialization Errors
559 bool _completed_initialization;
560
561 // In support of ExplicitGCInvokesConcurrent
562 static bool _full_gc_requested;
563 static GCCause::Cause _full_gc_cause;
|
523 friend class CMSKeepAliveClosure; // -- ditto --
524 friend class CMSDrainMarkingStackClosure; // -- ditto --
525 friend class CMSInnerParMarkAndPushClosure; // -- ditto --
526 NOT_PRODUCT(friend class ScanMarkedObjectsAgainClosure;) // assertion on _overflow_list
527 friend class ReleaseForegroundGC; // to access _foregroundGCShouldWait
528 friend class VM_CMS_Operation;
529 friend class VM_CMS_Initial_Mark;
530 friend class VM_CMS_Final_Remark;
531 friend class TraceCMSMemoryManagerStats;
532
533 private:
534 jlong _time_of_last_gc;
535 void update_time_of_last_gc(jlong now) {
536 _time_of_last_gc = now;
537 }
538
539 OopTaskQueueSet* _task_queues;
540
541 // Overflow list of grey objects, threaded through mark-word
542 // Manipulated with CAS in the parallel/multi-threaded case.
543 oopDesc* volatile _overflow_list;
544 // The following array-pair keeps track of mark words
545 // displaced for accommodating overflow list above.
546 // This code will likely be revisited under RFE#4922830.
547 Stack<oop, mtGC> _preserved_oop_stack;
548 Stack<markOop, mtGC> _preserved_mark_stack;
549
550 int* _hash_seed;
551
552 // In support of multi-threaded concurrent phases
553 YieldingFlexibleWorkGang* _conc_workers;
554
555 // Performance Counters
556 CollectorCounters* _gc_counters;
557
558 // Initialization Errors
559 bool _completed_initialization;
560
561 // In support of ExplicitGCInvokesConcurrent
562 static bool _full_gc_requested;
563 static GCCause::Cause _full_gc_cause;
|