< prev index next >

src/share/vm/gc/parallel/psScavenge.cpp

Print this page
rev 13328 : [mq]: webrev.0b
rev 13329 : [mq]: webrev.1
rev 13331 : imported patch webrev.3b
rev 13332 : [mq]: webrev.4


 398         if (gc_task_manager()->workers() > 1) {
 399           for (uint j = 0; j < active_workers; j++) {
 400             q->enqueue(new StealTask(&terminator));
 401           }
 402         }
 403 
 404       gc_task_manager()->execute_and_wait(q);
 405     }
 406 
 407     scavenge_midpoint.update();
 408 
 409     // Process reference objects discovered during scavenge
 410     {
 411       GCTraceTime(Debug, gc, phases) tm("Reference Processing", &_gc_timer);
 412 
 413       reference_processor()->setup_policy(false); // not always_clear
 414       reference_processor()->set_active_mt_degree(active_workers);
 415       PSKeepAliveClosure keep_alive(promotion_manager);
 416       PSEvacuateFollowersClosure evac_followers(promotion_manager);
 417       ReferenceProcessorStats stats;
 418       ReferenceProcessorPhaseTimes pt(&_gc_timer,
 419                                       reference_processor()->num_q(),
 420                                       reference_processor()->processing_is_mt());
 421       if (reference_processor()->processing_is_mt()) {
 422         PSRefProcTaskExecutor task_executor;
 423         stats = reference_processor()->process_discovered_references(
 424           &_is_alive_closure, &keep_alive, &evac_followers, &task_executor,
 425           &pt);
 426       } else {
 427         stats = reference_processor()->process_discovered_references(
 428           &_is_alive_closure, &keep_alive, &evac_followers, NULL, &pt);
 429       }
 430 
 431       _gc_tracer.report_gc_reference_stats(stats);
 432       pt.print_all_references();
 433 
 434       // Enqueue reference objects discovered during scavenge.
 435       if (reference_processor()->processing_is_mt()) {
 436         PSRefProcTaskExecutor task_executor;
 437         reference_processor()->enqueue_discovered_references(&task_executor, &pt);
 438       } else {
 439         reference_processor()->enqueue_discovered_references(NULL, &pt);
 440       }




 398         if (gc_task_manager()->workers() > 1) {
 399           for (uint j = 0; j < active_workers; j++) {
 400             q->enqueue(new StealTask(&terminator));
 401           }
 402         }
 403 
 404       gc_task_manager()->execute_and_wait(q);
 405     }
 406 
 407     scavenge_midpoint.update();
 408 
 409     // Process reference objects discovered during scavenge
 410     {
 411       GCTraceTime(Debug, gc, phases) tm("Reference Processing", &_gc_timer);
 412 
 413       reference_processor()->setup_policy(false); // not always_clear
 414       reference_processor()->set_active_mt_degree(active_workers);
 415       PSKeepAliveClosure keep_alive(promotion_manager);
 416       PSEvacuateFollowersClosure evac_followers(promotion_manager);
 417       ReferenceProcessorStats stats;
 418       ReferenceProcessorPhaseTimes pt(&_gc_timer, reference_processor()->num_q());


 419       if (reference_processor()->processing_is_mt()) {
 420         PSRefProcTaskExecutor task_executor;
 421         stats = reference_processor()->process_discovered_references(
 422           &_is_alive_closure, &keep_alive, &evac_followers, &task_executor,
 423           &pt);
 424       } else {
 425         stats = reference_processor()->process_discovered_references(
 426           &_is_alive_closure, &keep_alive, &evac_followers, NULL, &pt);
 427       }
 428 
 429       _gc_tracer.report_gc_reference_stats(stats);
 430       pt.print_all_references();
 431 
 432       // Enqueue reference objects discovered during scavenge.
 433       if (reference_processor()->processing_is_mt()) {
 434         PSRefProcTaskExecutor task_executor;
 435         reference_processor()->enqueue_discovered_references(&task_executor, &pt);
 436       } else {
 437         reference_processor()->enqueue_discovered_references(NULL, &pt);
 438       }


< prev index next >