src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hsx-gc.pslb Sdiff src/share/vm/gc_implementation/parallelScavenge

src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp

Print this page




 391 
 392       GCTaskQueue* q = GCTaskQueue::create();
 393 
 394       if (!old_gen->object_space()->is_empty()) {
 395         // There are only old-to-young pointers if there are objects
 396         // in the old gen.
 397         uint stripe_total = active_workers;
 398         for(uint i=0; i < stripe_total; i++) {
 399           q->enqueue(new OldToYoungRootsTask(old_gen, old_top, i, stripe_total));
 400         }
 401       }
 402 
 403       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::universe));
 404       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::jni_handles));
 405       // We scan the thread roots in parallel
 406       Threads::create_thread_roots_tasks(q);
 407       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::object_synchronizer));
 408       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::flat_profiler));
 409       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::management));
 410       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::system_dictionary));

 411       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::jvmti));
 412       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::code_cache));
 413 
 414       ParallelTaskTerminator terminator(
 415         active_workers,
 416                   (TaskQueueSetSuper*) promotion_manager->stack_array_depth());
 417       if (active_workers > 1) {
 418         for (uint j = 0; j < active_workers; j++) {
 419           q->enqueue(new StealTask(&terminator));
 420         }
 421       }
 422 
 423       gc_task_manager()->execute_and_wait(q);
 424     }
 425 
 426     scavenge_midpoint.update();
 427 
 428     // Process reference objects discovered during scavenge
 429     {
 430       reference_processor()->setup_policy(false); // not always_clear




 391 
 392       GCTaskQueue* q = GCTaskQueue::create();
 393 
 394       if (!old_gen->object_space()->is_empty()) {
 395         // There are only old-to-young pointers if there are objects
 396         // in the old gen.
 397         uint stripe_total = active_workers;
 398         for(uint i=0; i < stripe_total; i++) {
 399           q->enqueue(new OldToYoungRootsTask(old_gen, old_top, i, stripe_total));
 400         }
 401       }
 402 
 403       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::universe));
 404       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::jni_handles));
 405       // We scan the thread roots in parallel
 406       Threads::create_thread_roots_tasks(q);
 407       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::object_synchronizer));
 408       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::flat_profiler));
 409       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::management));
 410       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::system_dictionary));
 411       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::class_loader_data));
 412       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::jvmti));
 413       q->enqueue(new ScavengeRootsTask(ScavengeRootsTask::code_cache));
 414 
 415       ParallelTaskTerminator terminator(
 416         active_workers,
 417                   (TaskQueueSetSuper*) promotion_manager->stack_array_depth());
 418       if (active_workers > 1) {
 419         for (uint j = 0; j < active_workers; j++) {
 420           q->enqueue(new StealTask(&terminator));
 421         }
 422       }
 423 
 424       gc_task_manager()->execute_and_wait(q);
 425     }
 426 
 427     scavenge_midpoint.update();
 428 
 429     // Process reference objects discovered during scavenge
 430     {
 431       reference_processor()->setup_policy(false); // not always_clear


src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File