comparison src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp @ 1706:9d7a8ab3736b

6962589: remove breadth first scanning code from parallel gc Summary: Remove the breadth-first copying order from ParallelScavenge and use depth-first by default. Reviewed-by: jcoomes, ysr, johnc
author tonyp
date Thu, 22 Jul 2010 10:27:41 -0400
parents b2a00dd3117c
children 894b1d7c7e01
comparison
equal deleted inserted replaced
1705:2d160770d2e5 1706:9d7a8ab3736b
155 GCTaskQueue* q = GCTaskQueue::create(); 155 GCTaskQueue* q = GCTaskQueue::create();
156 for(uint i=0; i<ParallelGCThreads; i++) { 156 for(uint i=0; i<ParallelGCThreads; i++) {
157 q->enqueue(new PSRefProcTaskProxy(task, i)); 157 q->enqueue(new PSRefProcTaskProxy(task, i));
158 } 158 }
159 ParallelTaskTerminator terminator( 159 ParallelTaskTerminator terminator(
160 ParallelScavengeHeap::gc_task_manager()->workers(), 160 ParallelScavengeHeap::gc_task_manager()->workers(),
161 UseDepthFirstScavengeOrder ? 161 (TaskQueueSetSuper*) PSPromotionManager::stack_array_depth());
162 (TaskQueueSetSuper*) PSPromotionManager::stack_array_depth()
163 : (TaskQueueSetSuper*) PSPromotionManager::stack_array_breadth());
164 if (task.marks_oops_alive() && ParallelGCThreads > 1) { 162 if (task.marks_oops_alive() && ParallelGCThreads > 1) {
165 for (uint j=0; j<ParallelGCThreads; j++) { 163 for (uint j=0; j<ParallelGCThreads; j++) {
166 q->enqueue(new StealTask(&terminator)); 164 q->enqueue(new StealTask(&terminator));
167 } 165 }
168 } 166 }
373 q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::system_dictionary)); 371 q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::system_dictionary));
374 q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::jvmti)); 372 q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::jvmti));
375 q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::code_cache)); 373 q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::code_cache));
376 374
377 ParallelTaskTerminator terminator( 375 ParallelTaskTerminator terminator(
378 gc_task_manager()->workers(), 376 gc_task_manager()->workers(),
379 promotion_manager->depth_first() ? 377 (TaskQueueSetSuper*) promotion_manager->stack_array_depth());
380 (TaskQueueSetSuper*) promotion_manager->stack_array_depth()
381 : (TaskQueueSetSuper*) promotion_manager->stack_array_breadth());
382 if (ParallelGCThreads>1) { 378 if (ParallelGCThreads>1) {
383 for (uint j=0; j<ParallelGCThreads; j++) { 379 for (uint j=0; j<ParallelGCThreads; j++) {
384 q->enqueue(new StealTask(&terminator)); 380 q->enqueue(new StealTask(&terminator));
385 } 381 }
386 } 382 }