< prev index next >
src/share/vm/gc/g1/concurrentG1RefineThread.cpp
Print this page
rev 10241 : [mq]: simplify
*** 87,98 ****
}
void ConcurrentG1RefineThread::activate() {
MutexLockerEx x(_monitor, Mutex::_no_safepoint_check_flag);
if (!is_primary()) {
- log_debug(gc, refine)("G1-Refine-activated worker %d, on threshold %d, current %d",
- _worker_id, _threshold, JavaThread::dirty_card_queue_set().completed_buffers_num());
set_active(true);
} else {
DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
dcqs.set_process_completed(true);
}
--- 87,96 ----
*** 100,111 ****
}
void ConcurrentG1RefineThread::deactivate() {
MutexLockerEx x(_monitor, Mutex::_no_safepoint_check_flag);
if (!is_primary()) {
- log_debug(gc, refine)("G1-Refine-deactivated worker %d, off threshold %d, current %d",
- _worker_id, _deactivation_threshold, JavaThread::dirty_card_queue_set().completed_buffers_num());
set_active(false);
} else {
DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
dcqs.set_process_completed(false);
}
--- 98,107 ----
*** 128,180 ****
wait_for_completed_buffers();
if (_should_terminate) {
break;
}
{
SuspendibleThreadSetJoiner sts_join;
- DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
do {
int curr_buffer_num = (int)dcqs.completed_buffers_num();
// If the number of the buffers falls down into the yellow zone,
// that means that the transition period after the evacuation pause has ended.
if (dcqs.completed_queue_padding() > 0 && curr_buffer_num <= cg1r()->yellow_zone()) {
dcqs.set_completed_queue_padding(0);
}
- if (!is_primary() && curr_buffer_num <= _deactivation_threshold) {
- // If the number of the buffer has fallen below our threshold
- // we should deactivate. The predecessor will reactivate this
- // thread should the number of the buffers cross the threshold again.
- deactivate();
- break;
- }
-
// Check if we need to activate the next thread.
if (_next != NULL && !_next->is_active() && curr_buffer_num > _next->_threshold) {
_next->activate();
}
} while (dcqs.apply_closure_to_completed_buffer(_refine_closure,
_worker_id + _worker_id_offset,
! cg1r()->green_zone(),
false /* during_pause */));
- // We can exit the loop above while being active if there was a yield request.
- if (is_active()) {
deactivate();
! }
}
if (os::supports_vtime()) {
_vtime_accum = (os::elapsedVTime() - _vtime_start);
} else {
_vtime_accum = 0.0;
}
}
! log_debug(gc, refine)("G1-Refine-stop");
}
void ConcurrentG1RefineThread::stop() {
// it is ok to take late safepoints here, if needed
{
--- 124,171 ----
wait_for_completed_buffers();
if (_should_terminate) {
break;
}
+ DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set();
+ log_debug(gc, refine)("Activated %d, on threshold: %d, current: %d",
+ _worker_id, _threshold, dcqs.completed_buffers_num());
+
{
SuspendibleThreadSetJoiner sts_join;
do {
int curr_buffer_num = (int)dcqs.completed_buffers_num();
// If the number of the buffers falls down into the yellow zone,
// that means that the transition period after the evacuation pause has ended.
if (dcqs.completed_queue_padding() > 0 && curr_buffer_num <= cg1r()->yellow_zone()) {
dcqs.set_completed_queue_padding(0);
}
// Check if we need to activate the next thread.
if (_next != NULL && !_next->is_active() && curr_buffer_num > _next->_threshold) {
_next->activate();
}
} while (dcqs.apply_closure_to_completed_buffer(_refine_closure,
_worker_id + _worker_id_offset,
! _deactivation_threshold,
false /* during_pause */));
deactivate();
! log_debug(gc, refine)("Deactivated %d, off threshold: %d, current: %d",
! _worker_id, _deactivation_threshold,
! dcqs.completed_buffers_num());
}
if (os::supports_vtime()) {
_vtime_accum = (os::elapsedVTime() - _vtime_start);
} else {
_vtime_accum = 0.0;
}
}
! log_debug(gc, refine)("Stopping %d", _worker_id);
}
void ConcurrentG1RefineThread::stop() {
// it is ok to take late safepoints here, if needed
{
< prev index next >