src/share/vm/gc/g1/dirtyCardQueue.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/gc/g1/dirtyCardQueue.cpp	Thu Feb 25 12:30:30 2016
--- new/src/share/vm/gc/g1/dirtyCardQueue.cpp	Thu Feb 25 12:30:29 2016

*** 205,238 **** --- 205,240 ---- return b; } ! BufferNode* DirtyCardQueueSet::get_completed_buffer(int stop_at) { ! BufferNode* DirtyCardQueueSet::get_completed_buffer(size_t stop_at) { BufferNode* nd = NULL; MutexLockerEx x(_cbl_mon, Mutex::_no_safepoint_check_flag); - if ((int)_n_completed_buffers <= stop_at) { _process_completed = false; return NULL; } if (_completed_buffers_head != NULL) { nd = _completed_buffers_head; + assert(_n_completed_buffers > 0, "Invariant"); _completed_buffers_head = nd->next(); if (_completed_buffers_head == NULL) _completed_buffers_tail = NULL; _n_completed_buffers--; assert(_n_completed_buffers >= 0, "Invariant"); + if (_completed_buffers_head == NULL) { + assert(_n_completed_buffers == 0, "Invariant"); + _completed_buffers_tail = NULL; + } } DEBUG_ONLY(assert_completed_buffer_list_len_correct_locked()); return nd; } bool DirtyCardQueueSet::apply_closure_to_completed_buffer(CardTableEntryClosure* cl, uint worker_i, ! int stop_at, ! size_t stop_at, bool during_pause) { assert(!during_pause || stop_at == 0, "Should not leave any completed buffers during a pause"); BufferNode* nd = get_completed_buffer(stop_at); if (nd == NULL) { return false;

src/share/vm/gc/g1/dirtyCardQueue.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File