1.1 --- a/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp Fri Nov 20 14:47:01 2009 -0500 1.2 +++ b/src/share/vm/gc_implementation/g1/dirtyCardQueue.cpp Tue Nov 24 15:19:30 2009 -0800 1.3 @@ -155,7 +155,7 @@ 1.4 } 1.5 1.6 DirtyCardQueueSet::CompletedBufferNode* 1.7 -DirtyCardQueueSet::get_completed_buffer_lock(int stop_at) { 1.8 +DirtyCardQueueSet::get_completed_buffer(int stop_at) { 1.9 CompletedBufferNode* nd = NULL; 1.10 MutexLockerEx x(_cbl_mon, Mutex::_no_safepoint_check_flag); 1.11 1.12 @@ -175,28 +175,6 @@ 1.13 return nd; 1.14 } 1.15 1.16 -// We only do this in contexts where there is no concurrent enqueueing. 1.17 -DirtyCardQueueSet::CompletedBufferNode* 1.18 -DirtyCardQueueSet::get_completed_buffer_CAS() { 1.19 - CompletedBufferNode* nd = _completed_buffers_head; 1.20 - 1.21 - while (nd != NULL) { 1.22 - CompletedBufferNode* next = nd->next; 1.23 - CompletedBufferNode* result = 1.24 - (CompletedBufferNode*)Atomic::cmpxchg_ptr(next, 1.25 - &_completed_buffers_head, 1.26 - nd); 1.27 - if (result == nd) { 1.28 - return result; 1.29 - } else { 1.30 - nd = _completed_buffers_head; 1.31 - } 1.32 - } 1.33 - assert(_completed_buffers_head == NULL, "Loop post"); 1.34 - _completed_buffers_tail = NULL; 1.35 - return NULL; 1.36 -} 1.37 - 1.38 bool DirtyCardQueueSet:: 1.39 apply_closure_to_completed_buffer_helper(int worker_i, 1.40 CompletedBufferNode* nd) { 1.41 @@ -222,15 +200,10 @@ 1.42 1.43 bool DirtyCardQueueSet::apply_closure_to_completed_buffer(int worker_i, 1.44 int stop_at, 1.45 - bool with_CAS) 1.46 + bool during_pause) 1.47 { 1.48 - CompletedBufferNode* nd = NULL; 1.49 - if (with_CAS) { 1.50 - guarantee(stop_at == 0, "Precondition"); 1.51 - nd = get_completed_buffer_CAS(); 1.52 - } else { 1.53 - nd = get_completed_buffer_lock(stop_at); 1.54 - } 1.55 + assert(!during_pause || stop_at == 0, "Should not leave any completed buffers during a pause"); 1.56 + CompletedBufferNode* nd = get_completed_buffer(stop_at); 1.57 bool res = apply_closure_to_completed_buffer_helper(worker_i, nd); 1.58 if (res) Atomic::inc(&_processed_buffers_rs_thread); 1.59 return res;