--- old/src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp 2019-08-28 20:08:16.783319692 -0400 +++ new/src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp 2019-08-28 20:08:16.451301809 -0400 @@ -91,7 +91,7 @@ _notify_when_complete(notify_when_complete), _max_completed_buffers(MaxCompletedBuffersUnlimited), _completed_buffers_padding(0), - _free_ids(NULL), + _free_ids(new G1FreeIdSet(0, num_par_ids())), _processed_buffers_mut(0), _processed_buffers_rs_thread(0) { @@ -109,14 +109,10 @@ } void G1DirtyCardQueueSet::initialize(Monitor* cbl_mon, - BufferNode::Allocator* allocator, - bool init_free_ids) { + BufferNode::Allocator* allocator) { PtrQueueSet::initialize(allocator); assert(_cbl_mon == NULL, "Init order issue?"); _cbl_mon = cbl_mon; - if (init_free_ids) { - _free_ids = new G1FreeIdSet(0, num_par_ids()); - } } void G1DirtyCardQueueSet::handle_zero_index_for_thread(Thread* t) { @@ -291,8 +287,6 @@ } bool G1DirtyCardQueueSet::mut_process_buffer(BufferNode* node) { - guarantee(_free_ids != NULL, "must be"); - uint worker_i = _free_ids->claim_par_id(); // temporarily claim an id G1RefineCardConcurrentlyClosure cl; bool result = apply_closure_to_buffer(&cl, node, worker_i);