< 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 >