< prev index next >

src/share/vm/gc/cms/concurrentMarkSweepThread.hpp

Print this page
rev 10297 : [mq]: webrev.01
rev 10298 : [mq]: webrev.02

*** 35,56 **** // The Concurrent Mark Sweep GC Thread class ConcurrentMarkSweepThread: public ConcurrentGCThread { friend class VMStructs; friend class ConcurrentMarkSweepGeneration; // XXX should remove friendship friend class CMSCollector; - public: - virtual void run(); private: static ConcurrentMarkSweepThread* _cmst; static CMSCollector* _collector; static SurrogateLockerThread* _slt; static SurrogateLockerThread::SLT_msg_type _sltBuffer; static Monitor* _sltMonitor; - static bool _should_terminate; - enum CMS_flag_type { CMS_nil = NoBits, CMS_cms_wants_token = nth_bit(0), CMS_cms_has_token = nth_bit(1), CMS_vm_wants_token = nth_bit(2), --- 35,52 ----
*** 70,79 **** --- 66,78 ---- static char _pad_2[64 - sizeof(jint)]; // prevent cache-line sharing // debugging void verify_ok_to_terminate() const PRODUCT_RETURN; + void run_service(); + void stop_service(); + public: // Constructor ConcurrentMarkSweepThread(CMSCollector* collector); static void makeSurrogateLockerThread(TRAPS);
*** 84,102 **** // Printing static void print_all_on(outputStream* st); static void print_all() { print_all_on(tty); } // Returns the CMS Thread ! static ConcurrentMarkSweepThread* cmst() { return _cmst; } static CMSCollector* collector() { return _collector; } // Create and start the CMS Thread, or stop it on shutdown static ConcurrentMarkSweepThread* start(CMSCollector* collector); static void stop_all(); ! static bool should_terminate() { return _should_terminate; } ! // ConcurrentMarkSweepThread uses it's own termination protocol, not ConcurrentGCThread's: ! virtual void stop() { ShouldNotReachHere(); } // Synchronization using CMS token static void synchronize(bool is_cms_thread); static void desynchronize(bool is_cms_thread); static bool vm_thread_has_cms_token() { --- 83,105 ---- // Printing static void print_all_on(outputStream* st); static void print_all() { print_all_on(tty); } // Returns the CMS Thread ! inline static ConcurrentMarkSweepThread* cmst() { ! if (_cmst != NULL && !_cmst->_has_terminated) { ! return _cmst; ! } ! return NULL; ! } ! static CMSCollector* collector() { return _collector; } // Create and start the CMS Thread, or stop it on shutdown static ConcurrentMarkSweepThread* start(CMSCollector* collector); static void stop_all(); ! static bool should_terminate() { return _cmst != NULL && _cmst->_should_terminate; } // Synchronization using CMS token static void synchronize(bool is_cms_thread); static void desynchronize(bool is_cms_thread); static bool vm_thread_has_cms_token() {
< prev index next >