75 if (!is_primary()) {
76 set_active(true);
77 } else {
78 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set();
79 dcqs.set_process_completed_buffers(true);
80 }
81 _monitor->notify();
82 }
83
84 void G1ConcurrentRefineThread::deactivate() {
85 MutexLocker x(_monitor, Mutex::_no_safepoint_check_flag);
86 if (!is_primary()) {
87 set_active(false);
88 } else {
89 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set();
90 dcqs.set_process_completed_buffers(false);
91 }
92 }
93
94 void G1ConcurrentRefineThread::run_service() {
95 _vtime_start = os::elapsedVTime();
96
97 while (!should_terminate()) {
98 // Wait for work
99 wait_for_completed_buffers();
100 if (should_terminate()) {
101 break;
102 }
103
104 size_t buffers_processed = 0;
105 log_debug(gc, refine)("Activated worker %d, on threshold: " SIZE_FORMAT ", current: " SIZE_FORMAT,
106 _worker_id, _cr->activation_threshold(_worker_id),
107 G1BarrierSet::dirty_card_queue_set().completed_buffers_num());
108
109 {
110 SuspendibleThreadSetJoiner sts_join;
111
112 while (!should_terminate()) {
113 if (sts_join.should_yield()) {
114 sts_join.yield();
|
75 if (!is_primary()) {
76 set_active(true);
77 } else {
78 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set();
79 dcqs.set_process_completed_buffers(true);
80 }
81 _monitor->notify();
82 }
83
84 void G1ConcurrentRefineThread::deactivate() {
85 MutexLocker x(_monitor, Mutex::_no_safepoint_check_flag);
86 if (!is_primary()) {
87 set_active(false);
88 } else {
89 G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set();
90 dcqs.set_process_completed_buffers(false);
91 }
92 }
93
94 void G1ConcurrentRefineThread::run_service() {
95 assert(!G1FastWriteBarrier, "ConcurrentRefine should be disabled");
96 _vtime_start = os::elapsedVTime();
97
98 while (!should_terminate()) {
99 // Wait for work
100 wait_for_completed_buffers();
101 if (should_terminate()) {
102 break;
103 }
104
105 size_t buffers_processed = 0;
106 log_debug(gc, refine)("Activated worker %d, on threshold: " SIZE_FORMAT ", current: " SIZE_FORMAT,
107 _worker_id, _cr->activation_threshold(_worker_id),
108 G1BarrierSet::dirty_card_queue_set().completed_buffers_num());
109
110 {
111 SuspendibleThreadSetJoiner sts_join;
112
113 while (!should_terminate()) {
114 if (sts_join.should_yield()) {
115 sts_join.yield();
|