hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp
void G1ParEvacuateFollowersClosure::do_void() {
{- -------------------------------------------
(1)
---------------------------------------- -}
StarTask stolen_task;
G1ParScanThreadState* const pss = par_scan_state();
pss->trim_queue();
{- -------------------------------------------
(1)
---------------------------------------- -}
do {
while (queues()->steal(pss->queue_num(), pss->hash_seed(), stolen_task)) {
assert(pss->verify_task(stolen_task), "sanity");
if (stolen_task.is_narrow()) {
pss->deal_with_reference((narrowOop*) stolen_task);
} else {
pss->deal_with_reference((oop*) stolen_task);
}
// We've just processed a reference and we might have made
// available new entries on the queues. So we have to make sure
// we drain the queues as necessary.
pss->trim_queue();
}
} while (!offer_termination());
pss->retire_alloc_buffers();
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.