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 |