< prev index next >

src/hotspot/share/gc/cms/concurrentMarkSweepGeneration.hpp

Print this page




 536   }
 537 
 538   OopTaskQueueSet* _task_queues;
 539 
 540   // Overflow list of grey objects, threaded through mark-word
 541   // Manipulated with CAS in the parallel/multi-threaded case.
 542   oopDesc* volatile _overflow_list;
 543   // The following array-pair keeps track of mark words
 544   // displaced for accommodating overflow list above.
 545   // This code will likely be revisited under RFE#4922830.
 546   Stack<oop, mtGC>     _preserved_oop_stack;
 547   Stack<markOop, mtGC> _preserved_mark_stack;
 548 
 549   int*             _hash_seed;
 550 
 551   // In support of multi-threaded concurrent phases
 552   YieldingFlexibleWorkGang* _conc_workers;
 553 
 554   // Performance Counters
 555   CollectorCounters* _gc_counters;

 556 
 557   // Initialization Errors
 558   bool _completed_initialization;
 559 
 560   // In support of ExplicitGCInvokesConcurrent
 561   static bool _full_gc_requested;
 562   static GCCause::Cause _full_gc_cause;
 563   unsigned int _collection_count_start;
 564 
 565   // Should we unload classes this concurrent cycle?
 566   bool _should_unload_classes;
 567   unsigned int  _concurrent_cycles_since_last_unload;
 568   unsigned int concurrent_cycles_since_last_unload() const {
 569     return _concurrent_cycles_since_last_unload;
 570   }
 571   // Did we (allow) unload classes in the previous concurrent cycle?
 572   bool unloaded_classes_last_cycle() const {
 573     return concurrent_cycles_since_last_unload() == 0;
 574   }
 575   // Root scanning options for perm gen


 911 
 912   CMSBitMap* markBitMap()  { return &_markBitMap; }
 913   void directAllocated(HeapWord* start, size_t size);
 914 
 915   // Main CMS steps and related support
 916   void checkpointRootsInitial();
 917   bool markFromRoots();  // a return value of false indicates failure
 918                          // due to stack overflow
 919   void preclean();
 920   void checkpointRootsFinal();
 921   void sweep();
 922 
 923   // Check that the currently executing thread is the expected
 924   // one (foreground collector or background collector).
 925   static void check_correct_thread_executing() PRODUCT_RETURN;
 926 
 927   NOT_PRODUCT(bool is_cms_reachable(HeapWord* addr);)
 928 
 929   // Performance Counter Support
 930   CollectorCounters* counters()    { return _gc_counters; }

 931 
 932   // Timer stuff
 933   void    startTimer() { assert(!_timer.is_active(), "Error"); _timer.start();   }
 934   void    stopTimer()  { assert( _timer.is_active(), "Error"); _timer.stop();    }
 935   void    resetTimer() { assert(!_timer.is_active(), "Error"); _timer.reset();   }
 936   jlong   timerTicks() { assert(!_timer.is_active(), "Error"); return _timer.ticks(); }
 937 
 938   int  yields()          { return _numYields; }
 939   void resetYields()     { _numYields = 0;    }
 940   void incrementYields() { _numYields++;      }
 941   void resetNumDirtyCards()               { _numDirtyCards = 0; }
 942   void incrementNumDirtyCards(size_t num) { _numDirtyCards += num; }
 943   size_t  numDirtyCards()                 { return _numDirtyCards; }
 944 
 945   static bool foregroundGCShouldWait() { return _foregroundGCShouldWait; }
 946   static void set_foregroundGCShouldWait(bool v) { _foregroundGCShouldWait = v; }
 947   static bool foregroundGCIsActive() { return _foregroundGCIsActive; }
 948   static void set_foregroundGCIsActive(bool v) { _foregroundGCIsActive = v; }
 949   size_t sweep_count() const             { return _sweep_count; }
 950   void   increment_sweep_count()         { _sweep_count++; }




 536   }
 537 
 538   OopTaskQueueSet* _task_queues;
 539 
 540   // Overflow list of grey objects, threaded through mark-word
 541   // Manipulated with CAS in the parallel/multi-threaded case.
 542   oopDesc* volatile _overflow_list;
 543   // The following array-pair keeps track of mark words
 544   // displaced for accommodating overflow list above.
 545   // This code will likely be revisited under RFE#4922830.
 546   Stack<oop, mtGC>     _preserved_oop_stack;
 547   Stack<markOop, mtGC> _preserved_mark_stack;
 548 
 549   int*             _hash_seed;
 550 
 551   // In support of multi-threaded concurrent phases
 552   YieldingFlexibleWorkGang* _conc_workers;
 553 
 554   // Performance Counters
 555   CollectorCounters* _gc_counters;
 556   CollectorCounters* _cgc_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;
 564   unsigned int _collection_count_start;
 565 
 566   // Should we unload classes this concurrent cycle?
 567   bool _should_unload_classes;
 568   unsigned int  _concurrent_cycles_since_last_unload;
 569   unsigned int concurrent_cycles_since_last_unload() const {
 570     return _concurrent_cycles_since_last_unload;
 571   }
 572   // Did we (allow) unload classes in the previous concurrent cycle?
 573   bool unloaded_classes_last_cycle() const {
 574     return concurrent_cycles_since_last_unload() == 0;
 575   }
 576   // Root scanning options for perm gen


 912 
 913   CMSBitMap* markBitMap()  { return &_markBitMap; }
 914   void directAllocated(HeapWord* start, size_t size);
 915 
 916   // Main CMS steps and related support
 917   void checkpointRootsInitial();
 918   bool markFromRoots();  // a return value of false indicates failure
 919                          // due to stack overflow
 920   void preclean();
 921   void checkpointRootsFinal();
 922   void sweep();
 923 
 924   // Check that the currently executing thread is the expected
 925   // one (foreground collector or background collector).
 926   static void check_correct_thread_executing() PRODUCT_RETURN;
 927 
 928   NOT_PRODUCT(bool is_cms_reachable(HeapWord* addr);)
 929 
 930   // Performance Counter Support
 931   CollectorCounters* counters()     { return _gc_counters; }
 932   CollectorCounters* cgc_counters() { return _cgc_counters; }
 933 
 934   // Timer stuff
 935   void    startTimer() { assert(!_timer.is_active(), "Error"); _timer.start();   }
 936   void    stopTimer()  { assert( _timer.is_active(), "Error"); _timer.stop();    }
 937   void    resetTimer() { assert(!_timer.is_active(), "Error"); _timer.reset();   }
 938   jlong   timerTicks() { assert(!_timer.is_active(), "Error"); return _timer.ticks(); }
 939 
 940   int  yields()          { return _numYields; }
 941   void resetYields()     { _numYields = 0;    }
 942   void incrementYields() { _numYields++;      }
 943   void resetNumDirtyCards()               { _numDirtyCards = 0; }
 944   void incrementNumDirtyCards(size_t num) { _numDirtyCards += num; }
 945   size_t  numDirtyCards()                 { return _numDirtyCards; }
 946 
 947   static bool foregroundGCShouldWait() { return _foregroundGCShouldWait; }
 948   static void set_foregroundGCShouldWait(bool v) { _foregroundGCShouldWait = v; }
 949   static bool foregroundGCIsActive() { return _foregroundGCIsActive; }
 950   static void set_foregroundGCIsActive(bool v) { _foregroundGCIsActive = v; }
 951   size_t sweep_count() const             { return _sweep_count; }
 952   void   increment_sweep_count()         { _sweep_count++; }


< prev index next >