--- old/src/share/vm/gc/g1/dirtyCardQueue.cpp 2016-03-23 03:22:12.446722640 -0400 +++ new/src/share/vm/gc/g1/dirtyCardQueue.cpp 2016-03-23 03:22:12.346722144 -0400 @@ -175,6 +175,13 @@ return result; } +inline void assert_fully_consumed(BufferNode* node, size_t buffer_size) { + assert(node->index() == buffer_size, + "Buffer was not fully consumed as claimed: index: " SIZE_FORMAT + ", size: " SIZE_FORMAT, + node->index(), buffer_size); +} + bool DirtyCardQueueSet::mut_process_buffer(BufferNode* node) { guarantee(_free_ids != NULL, "must be"); @@ -183,7 +190,7 @@ _free_ids->release_par_id(worker_i); // release the id if (result) { - assert(node->index() == buffer_size(), "apply said fully consumed"); + assert_fully_consumed(node, buffer_size()); Atomic::inc(&_processed_buffers_mut); } return result; @@ -223,7 +230,7 @@ return false; } else { if (apply_closure_to_buffer(cl, nd, true, worker_i)) { - assert(nd->index() == buffer_size(), "apply said fully consumed"); + assert_fully_consumed(nd, buffer_size()); // Done with fully processed buffer. deallocate_buffer(nd); Atomic::inc(&_processed_buffers_rs_thread);