--- old/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp 2013-09-06 14:11:05.632376129 +0200 +++ new/src/share/vm/gc_implementation/g1/concurrentG1RefineThread.cpp 2013-09-06 14:11:05.536374391 +0200 @@ -96,7 +96,6 @@ } void ConcurrentG1RefineThread::run_young_rs_sampling() { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); _vtime_start = os::elapsedVTime(); while(!_should_terminate) { _sts.join(); @@ -118,7 +117,6 @@ } void ConcurrentG1RefineThread::wait_for_completed_buffers() { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); MutexLockerEx x(_monitor, Mutex::_no_safepoint_check_flag); while (!_should_terminate && !is_active()) { _monitor->wait(Mutex::_no_safepoint_check_flag); @@ -126,7 +124,7 @@ } bool ConcurrentG1RefineThread::is_active() { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); + DirtyCardQueueSet& dcqs = cg1r()->cards_ready_for_refinement(); return _worker_id > 0 ? _active : dcqs.process_completed_buffers(); } @@ -134,13 +132,13 @@ MutexLockerEx x(_monitor, Mutex::_no_safepoint_check_flag); if (_worker_id > 0) { if (G1TraceConcRefinement) { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); + DirtyCardQueueSet& dcqs = cg1r()->cards_ready_for_refinement(); gclog_or_tty->print_cr("G1-Refine-activated worker %d, on threshold %d, current %d", _worker_id, _threshold, (int)dcqs.completed_buffers_num()); } set_active(true); } else { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); + DirtyCardQueueSet& dcqs = cg1r()->cards_ready_for_refinement(); dcqs.set_process_completed(true); } _monitor->notify(); @@ -150,13 +148,13 @@ MutexLockerEx x(_monitor, Mutex::_no_safepoint_check_flag); if (_worker_id > 0) { if (G1TraceConcRefinement) { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); + DirtyCardQueueSet& dcqs = cg1r()->cards_ready_for_refinement(); gclog_or_tty->print_cr("G1-Refine-deactivated worker %d, off threshold %d, current %d", _worker_id, _deactivation_threshold, (int)dcqs.completed_buffers_num()); } set_active(false); } else { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); + DirtyCardQueueSet& dcqs = cg1r()->cards_ready_for_refinement(); dcqs.set_process_completed(false); } } @@ -173,7 +171,8 @@ _vtime_start = os::elapsedVTime(); while (!_should_terminate) { - DirtyCardQueueSet& dcqs = JavaThread::dirty_card_queue_set(); + DirtyCardQueueSet& dcqs = cg1r()->cards_ready_for_refinement(); + cg1r()->flush_cards_in_buffers(); // Wait for work wait_for_completed_buffers();