src/hotspot/share/gc/g1/dirtyCardQueue.cpp
changeset 52684 e62fe5079d64
parent 52582 6df094be7f58
child 52726 9cfa2e273b77
equal deleted inserted replaced
52683:e017d2f176d0 52684:e62fe5079d64
   219   return result;
   219   return result;
   220 }
   220 }
   221 
   221 
   222 
   222 
   223 BufferNode* DirtyCardQueueSet::get_completed_buffer(size_t stop_at) {
   223 BufferNode* DirtyCardQueueSet::get_completed_buffer(size_t stop_at) {
   224   BufferNode* nd = NULL;
       
   225   MutexLockerEx x(_cbl_mon, Mutex::_no_safepoint_check_flag);
   224   MutexLockerEx x(_cbl_mon, Mutex::_no_safepoint_check_flag);
   226 
   225 
   227   if (_n_completed_buffers <= stop_at) {
   226   if (_n_completed_buffers <= stop_at) {
   228     _process_completed = false;
       
   229     return NULL;
   227     return NULL;
   230   }
   228   }
   231 
   229 
   232   if (_completed_buffers_head != NULL) {
   230   assert(_n_completed_buffers > 0, "invariant");
   233     nd = _completed_buffers_head;
   231   assert(_completed_buffers_head != NULL, "invariant");
   234     assert(_n_completed_buffers > 0, "Invariant");
   232   assert(_completed_buffers_tail != NULL, "invariant");
   235     _completed_buffers_head = nd->next();
   233 
   236     _n_completed_buffers--;
   234   BufferNode* nd = _completed_buffers_head;
   237     if (_completed_buffers_head == NULL) {
   235   _completed_buffers_head = nd->next();
   238       assert(_n_completed_buffers == 0, "Invariant");
   236   _n_completed_buffers--;
   239       _completed_buffers_tail = NULL;
   237   if (_completed_buffers_head == NULL) {
   240     }
   238     assert(_n_completed_buffers == 0, "Invariant");
       
   239     _completed_buffers_tail = NULL;
   241   }
   240   }
   242   DEBUG_ONLY(assert_completed_buffer_list_len_correct_locked());
   241   DEBUG_ONLY(assert_completed_buffer_list_len_correct_locked());
   243   return nd;
   242   return nd;
   244 }
   243 }
   245 
   244