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 Fri Feb 19 12:01:47 2016
--- new/src/share/vm/gc/g1/dirtyCardQueue.cpp Fri Feb 19 12:01:46 2016
*** 164,175 ****
--- 164,175 ----
}
void DirtyCardQueueSet::initialize(CardTableEntryClosure* cl,
Monitor* cbl_mon,
Mutex* fl_lock,
! int process_completed_threshold,
! int max_completed_queue,
! size_t process_completed_threshold,
! size_t max_completed_queue,
Mutex* lock,
DirtyCardQueueSet* fl_owner,
bool init_free_ids) {
_mut_process_closure = cl;
PtrQueueSet::initialize(cbl_mon,
*** 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;
*** 321,332 ****
--- 323,334 ----
void DirtyCardQueueSet::concatenate_logs() {
// Iterate over all the threads, if we find a partial log add it to
// the global list of logs. Temporarily turn off the limit on the number
// of outstanding buffers.
! int save_max_completed_queue = _max_completed_queue;
! _max_completed_queue = max_jint;
! size_t save_max_completed_queue = _max_completed_queue;
! _max_completed_queue = SIZE_MAX;
assert(SafepointSynchronize::is_at_safepoint(), "Must be at safepoint.");
for (JavaThread* t = Threads::first(); t; t = t->next()) {
DirtyCardQueue& dcq = t->dirty_card_queue();
if (dcq.size() != 0) {
void** buf = dcq.get_buf();
src/share/vm/gc/g1/dirtyCardQueue.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File