diff -r c470f977ade8 -r 9cfa2e273b77 src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp --- a/src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp Wed Nov 28 16:04:36 2018 -0500 +++ b/src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp Wed Nov 28 16:05:48 2018 -0500 @@ -144,7 +144,7 @@ STATIC_ASSERT(sizeof(LP64_ONLY(jint) NOT_LP64(jshort)) <= (sizeof(size_t)/2)); const size_t max_yellow_zone = LP64_ONLY(max_jint) NOT_LP64(max_jshort); const size_t max_green_zone = max_yellow_zone / 2; -const size_t max_red_zone = INT_MAX; // For dcqs.set_max_completed_queue. +const size_t max_red_zone = INT_MAX; // For dcqs.set_max_completed_buffers. STATIC_ASSERT(max_yellow_zone <= max_red_zone); // Range check assertions for green zone values. @@ -386,21 +386,22 @@ // Change the barrier params if (max_num_threads() == 0) { // Disable dcqs notification when there are no threads to notify. - dcqs.set_process_completed_threshold(INT_MAX); + dcqs.set_process_completed_buffers_threshold(DirtyCardQueueSet::ProcessCompletedBuffersThresholdNever); } else { // Worker 0 is the primary; wakeup is via dcqs notification. STATIC_ASSERT(max_yellow_zone <= INT_MAX); size_t activate = activation_threshold(0); - dcqs.set_process_completed_threshold((int)activate); + dcqs.set_process_completed_buffers_threshold(activate); } - dcqs.set_max_completed_queue((int)red_zone()); + dcqs.set_max_completed_buffers(red_zone()); } size_t curr_queue_size = dcqs.completed_buffers_num(); - if (curr_queue_size >= yellow_zone()) { - dcqs.set_completed_queue_padding(curr_queue_size); + if ((dcqs.max_completed_buffers() > 0) && + (curr_queue_size >= yellow_zone())) { + dcqs.set_completed_buffers_padding(curr_queue_size); } else { - dcqs.set_completed_queue_padding(0); + dcqs.set_completed_buffers_padding(0); } dcqs.notify_if_necessary(); } @@ -433,8 +434,8 @@ // that means that the transition period after the evacuation pause has ended. // Since the value written to the DCQS is the same for all threads, there is no // need to synchronize. - if (dcqs.completed_queue_padding() > 0 && curr_buffer_num <= yellow_zone()) { - dcqs.set_completed_queue_padding(0); + if (dcqs.completed_buffers_padding() > 0 && curr_buffer_num <= yellow_zone()) { + dcqs.set_completed_buffers_padding(0); } maybe_activate_more_threads(worker_id, curr_buffer_num);