hotspot/src/share/vm/gc_implementation/parallelScavenge/pcTasks.cpp
changeset 14582 490bb6c0df7c
parent 13952 e3cf184080bc
child 17370 59a0620561fa
equal deleted inserted replaced
14581:8427edf5a77b 14582:490bb6c0df7c
    50 
    50 
    51   NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask",
    51   NOT_PRODUCT(TraceTime tm("ThreadRootsMarkingTask",
    52     PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty));
    52     PrintGCDetails && TraceParallelOldGCTasks, true, gclog_or_tty));
    53   ParCompactionManager* cm =
    53   ParCompactionManager* cm =
    54     ParCompactionManager::gc_thread_compaction_manager(which);
    54     ParCompactionManager::gc_thread_compaction_manager(which);
       
    55 
    55   PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
    56   PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm);
       
    57   CLDToOopClosure mark_and_push_from_clds(&mark_and_push_closure, true);
    56   CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true);
    58   CodeBlobToOopClosure mark_and_push_in_blobs(&mark_and_push_closure, /*do_marking=*/ true);
    57 
    59 
    58   if (_java_thread != NULL)
    60   if (_java_thread != NULL)
    59     _java_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs);
    61     _java_thread->oops_do(
       
    62         &mark_and_push_closure,
       
    63         &mark_and_push_from_clds,
       
    64         &mark_and_push_in_blobs);
    60 
    65 
    61   if (_vm_thread != NULL)
    66   if (_vm_thread != NULL)
    62     _vm_thread->oops_do(&mark_and_push_closure, &mark_and_push_in_blobs);
    67     _vm_thread->oops_do(
       
    68         &mark_and_push_closure,
       
    69         &mark_and_push_from_clds,
       
    70         &mark_and_push_in_blobs);
    63 
    71 
    64   // Do the real work
    72   // Do the real work
    65   cm->follow_marking_stacks();
    73   cm->follow_marking_stacks();
    66 }
    74 }
    67 
    75 
    87 
    95 
    88     case threads:
    96     case threads:
    89     {
    97     {
    90       ResourceMark rm;
    98       ResourceMark rm;
    91       CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true);
    99       CodeBlobToOopClosure each_active_code_blob(&mark_and_push_closure, /*do_marking=*/ true);
    92       Threads::oops_do(&mark_and_push_closure, &each_active_code_blob);
   100       CLDToOopClosure mark_and_push_from_cld(&mark_and_push_closure);
       
   101       Threads::oops_do(&mark_and_push_closure, &mark_and_push_from_cld, &each_active_code_blob);
    93     }
   102     }
    94     break;
   103     break;
    95 
   104 
    96     case object_synchronizer:
   105     case object_synchronizer:
    97       ObjectSynchronizer::oops_do(&mark_and_push_closure);
   106       ObjectSynchronizer::oops_do(&mark_and_push_closure);