< prev index next >
src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp
Print this page
rev 56112 : [mq]: lkorinth_review
*** 89,108 ****
_process_completed_buffers_threshold(ProcessCompletedBuffersThresholdNever),
_process_completed_buffers(false),
_notify_when_complete(notify_when_complete),
_max_completed_buffers(MaxCompletedBuffersUnlimited),
_completed_buffers_padding(0),
! _free_ids(new G1FreeIdSet(0, num_par_ids())),
_processed_buffers_mut(0),
_processed_buffers_rs_thread(0)
{
_all_active = true;
}
G1DirtyCardQueueSet::~G1DirtyCardQueueSet() {
abandon_completed_buffers();
- delete _free_ids;
}
// Determines how many mutator threads can process the buffers in parallel.
uint G1DirtyCardQueueSet::num_par_ids() {
return (uint)os::initial_active_processor_count();
--- 89,107 ----
_process_completed_buffers_threshold(ProcessCompletedBuffersThresholdNever),
_process_completed_buffers(false),
_notify_when_complete(notify_when_complete),
_max_completed_buffers(MaxCompletedBuffersUnlimited),
_completed_buffers_padding(0),
! _free_ids(0, num_par_ids()),
_processed_buffers_mut(0),
_processed_buffers_rs_thread(0)
{
_all_active = true;
}
G1DirtyCardQueueSet::~G1DirtyCardQueueSet() {
abandon_completed_buffers();
}
// Determines how many mutator threads can process the buffers in parallel.
uint G1DirtyCardQueueSet::num_par_ids() {
return (uint)os::initial_active_processor_count();
*** 285,298 ****
enqueue_completed_buffer(node);
return false;
}
bool G1DirtyCardQueueSet::mut_process_buffer(BufferNode* node) {
! uint worker_i = _free_ids->claim_par_id(); // temporarily claim an id
G1RefineCardConcurrentlyClosure cl;
! bool result = apply_closure_to_buffer(&cl, node, worker_i);
! _free_ids->release_par_id(worker_i); // release the id
if (result) {
assert_fully_consumed(node, buffer_size());
Atomic::inc(&_processed_buffers_mut);
}
--- 284,297 ----
enqueue_completed_buffer(node);
return false;
}
bool G1DirtyCardQueueSet::mut_process_buffer(BufferNode* node) {
! uint worker_id = _free_ids.claim_par_id(); // temporarily claim an id
G1RefineCardConcurrentlyClosure cl;
! bool result = apply_closure_to_buffer(&cl, node, worker_id);
! _free_ids.release_par_id(worker_id); // release the id
if (result) {
assert_fully_consumed(node, buffer_size());
Atomic::inc(&_processed_buffers_mut);
}
< prev index next >