src/hotspot/share/gc/g1/g1ConcurrentRefineThread.hpp
changeset 48103 26dbe08d1c17
parent 47789 a77a7d3bc4f6
child 51332 c25572739e7c
equal deleted inserted replaced
48102:08be4c1e540e 48103:26dbe08d1c17
    41   double _vtime_start;  // Initial virtual time.
    41   double _vtime_start;  // Initial virtual time.
    42   double _vtime_accum;  // Accumulated virtual time.
    42   double _vtime_accum;  // Accumulated virtual time.
    43   uint _worker_id;
    43   uint _worker_id;
    44   uint _worker_id_offset;
    44   uint _worker_id_offset;
    45 
    45 
    46   // The refinement threads collection is linked list. A predecessor can activate a successor
       
    47   // when the number of the rset update buffer crosses a certain threshold. A successor
       
    48   // would self-deactivate when the number of the buffers falls below the threshold.
       
    49   bool _active;
    46   bool _active;
    50   G1ConcurrentRefineThread* _next;
       
    51   Monitor* _monitor;
    47   Monitor* _monitor;
    52   G1ConcurrentRefine* _cr;
    48   G1ConcurrentRefine* _cr;
    53 
       
    54   // This thread's activation/deactivation thresholds
       
    55   size_t _activation_threshold;
       
    56   size_t _deactivation_threshold;
       
    57 
    49 
    58   void wait_for_completed_buffers();
    50   void wait_for_completed_buffers();
    59 
    51 
    60   void set_active(bool x) { _active = x; }
    52   void set_active(bool x) { _active = x; }
    61   bool is_active();
    53   // Deactivate this thread.
    62   void activate();
       
    63   void deactivate();
    54   void deactivate();
    64 
    55 
    65   bool is_primary() { return (_worker_id == 0); }
    56   bool is_primary() { return (_worker_id == 0); }
    66 
    57 
    67   void run_service();
    58   void run_service();
    68   void stop_service();
    59   void stop_service();
       
    60 public:
       
    61   G1ConcurrentRefineThread(G1ConcurrentRefine* cg1r, uint worker_id);
    69 
    62 
    70 public:
    63   bool is_active();
    71   // Constructor
    64   // Activate this thread.
    72   G1ConcurrentRefineThread(G1ConcurrentRefine* cr, G1ConcurrentRefineThread* next,
    65   void activate();
    73                            uint worker_id_offset, uint worker_id,
       
    74                            size_t activate, size_t deactivate);
       
    75 
       
    76   void update_thresholds(size_t activate, size_t deactivate);
       
    77   size_t activation_threshold() const { return _activation_threshold; }
       
    78 
    66 
    79   // Total virtual time so far.
    67   // Total virtual time so far.
    80   double vtime_accum() { return _vtime_accum; }
    68   double vtime_accum() { return _vtime_accum; }
    81 
       
    82   G1ConcurrentRefine* cr() { return _cr;     }
       
    83 };
    69 };
    84 
    70 
    85 #endif // SHARE_VM_GC_G1_G1CONCURRENTREFINETHREAD_HPP
    71 #endif // SHARE_VM_GC_G1_G1CONCURRENTREFINETHREAD_HPP