Mercurial > hg > truffle
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 } |