src/hotspot/share/gc/shared/concurrentGCThread.hpp
changeset 54329 ddd60ad787d4
parent 53244 9807daeb47c4
equal deleted inserted replaced
54328:37648a9c4a6a 54329:ddd60ad787d4
    24 
    24 
    25 #ifndef SHARE_GC_SHARED_CONCURRENTGCTHREAD_HPP
    25 #ifndef SHARE_GC_SHARED_CONCURRENTGCTHREAD_HPP
    26 #define SHARE_GC_SHARED_CONCURRENTGCTHREAD_HPP
    26 #define SHARE_GC_SHARED_CONCURRENTGCTHREAD_HPP
    27 
    27 
    28 #include "runtime/thread.hpp"
    28 #include "runtime/thread.hpp"
    29 #include "utilities/macros.hpp"
       
    30 
    29 
    31 class ConcurrentGCThread: public NamedThread {
    30 class ConcurrentGCThread: public NamedThread {
    32   friend class VMStructs;
    31 private:
    33 
    32   volatile bool _should_terminate;
    34   bool volatile _should_terminate;
    33   volatile bool _has_terminated;
    35   bool _has_terminated;
       
    36 
       
    37   // Do initialization steps in the thread: record stack base and size,
       
    38   // init thread local storage, set JNI handle block.
       
    39   void initialize_in_thread();
       
    40 
       
    41   // Wait until Universe::is_fully_initialized();
       
    42   void wait_for_universe_init();
       
    43 
       
    44   // Record that the current thread is terminating, and will do more
       
    45   // concurrent work.
       
    46   void terminate();
       
    47 
    34 
    48 protected:
    35 protected:
    49   // Create and start the thread (setting it's priority.)
       
    50   void create_and_start(ThreadPriority prio = NearMaxPriority);
    36   void create_and_start(ThreadPriority prio = NearMaxPriority);
    51 
    37 
    52   // Do the specific GC work. Called by run() after initialization complete.
       
    53   virtual void run_service() = 0;
    38   virtual void run_service() = 0;
    54 
    39   virtual void stop_service() = 0;
    55   // Shut down the specific GC work. Called by stop() as part of termination protocol.
       
    56   virtual void stop_service()  = 0;
       
    57 
    40 
    58 public:
    41 public:
    59   ConcurrentGCThread();
    42   ConcurrentGCThread();
    60 
    43 
    61   // Tester
    44   virtual bool is_ConcurrentGC_thread() const { return true; }
    62   bool is_ConcurrentGC_thread() const { return true; }
       
    63 
    45 
    64   virtual void run();
    46   virtual void run();
    65 
       
    66   // shutdown following termination protocol
       
    67   virtual void stop();
    47   virtual void stop();
    68 
    48 
    69   bool should_terminate() { return _should_terminate; }
    49   bool should_terminate() const;
    70   bool has_terminated()   { return _has_terminated; }
    50   bool has_terminated() const;
    71 };
    51 };
    72 
    52 
    73 #endif // SHARE_GC_SHARED_CONCURRENTGCTHREAD_HPP
    53 #endif // SHARE_GC_SHARED_CONCURRENTGCTHREAD_HPP