comparison src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp @ 1883:35e4e086d5f5

6990359: G1: don't push a stolen entry on the taskqueue, deal with it directly Summary: When an entry is stolen, don't push it on the task queue but process it directly. Reviewed-by: iveresov, ysr, jcoomes
author tonyp
date Thu, 14 Oct 2010 10:38:14 -0400
parents b14ec34b1e07
children 878b57474103
comparison
equal deleted inserted replaced
1862:b14ec34b1e07 1883:35e4e086d5f5
4116 4116
4117 do { 4117 do {
4118 while (queues()->steal(pss->queue_num(), pss->hash_seed(), stolen_task)) { 4118 while (queues()->steal(pss->queue_num(), pss->hash_seed(), stolen_task)) {
4119 assert(pss->verify_task(stolen_task), "sanity"); 4119 assert(pss->verify_task(stolen_task), "sanity");
4120 if (stolen_task.is_narrow()) { 4120 if (stolen_task.is_narrow()) {
4121 pss->push_on_queue((narrowOop*) stolen_task); 4121 pss->deal_with_reference((narrowOop*) stolen_task);
4122 } else { 4122 } else {
4123 pss->push_on_queue((oop*) stolen_task); 4123 pss->deal_with_reference((oop*) stolen_task);
4124 } 4124 }
4125
4126 // We've just processed a reference and we might have made
4127 // available new entries on the queues. So we have to make sure
4128 // we drain the queues as necessary.
4125 pss->trim_queue(); 4129 pss->trim_queue();
4126 } 4130 }
4127 } while (!offer_termination()); 4131 } while (!offer_termination());
4128 4132
4129 pss->retire_alloc_buffers(); 4133 pss->retire_alloc_buffers();