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