< 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 >