hotspot/src/share/vm/gc_implementation/parallelScavenge/psTasks.cpp
changeset 14582 490bb6c0df7c
parent 13924 159131321ed4
child 17844 28ca9179db98
equal deleted inserted replaced
14581:8427edf5a77b 14582:490bb6c0df7c
    63       break;
    63       break;
    64 
    64 
    65     case threads:
    65     case threads:
    66     {
    66     {
    67       ResourceMark rm;
    67       ResourceMark rm;
    68       Threads::oops_do(&roots_closure, NULL);
    68       CLDToOopClosure* cld_closure = NULL; // Not needed. All CLDs are already visited.
       
    69       Threads::oops_do(&roots_closure, cld_closure, NULL);
    69     }
    70     }
    70     break;
    71     break;
    71 
    72 
    72     case object_synchronizer:
    73     case object_synchronizer:
    73       ObjectSynchronizer::oops_do(&roots_closure);
    74       ObjectSynchronizer::oops_do(&roots_closure);
   118 void ThreadRootsTask::do_it(GCTaskManager* manager, uint which) {
   119 void ThreadRootsTask::do_it(GCTaskManager* manager, uint which) {
   119   assert(Universe::heap()->is_gc_active(), "called outside gc");
   120   assert(Universe::heap()->is_gc_active(), "called outside gc");
   120 
   121 
   121   PSPromotionManager* pm = PSPromotionManager::gc_thread_promotion_manager(which);
   122   PSPromotionManager* pm = PSPromotionManager::gc_thread_promotion_manager(which);
   122   PSScavengeRootsClosure roots_closure(pm);
   123   PSScavengeRootsClosure roots_closure(pm);
       
   124   CLDToOopClosure* roots_from_clds = NULL;  // Not needed. All CLDs are already visited.
   123   CodeBlobToOopClosure roots_in_blobs(&roots_closure, /*do_marking=*/ true);
   125   CodeBlobToOopClosure roots_in_blobs(&roots_closure, /*do_marking=*/ true);
   124 
   126 
   125   if (_java_thread != NULL)
   127   if (_java_thread != NULL)
   126     _java_thread->oops_do(&roots_closure, &roots_in_blobs);
   128     _java_thread->oops_do(&roots_closure, roots_from_clds, &roots_in_blobs);
   127 
   129 
   128   if (_vm_thread != NULL)
   130   if (_vm_thread != NULL)
   129     _vm_thread->oops_do(&roots_closure, &roots_in_blobs);
   131     _vm_thread->oops_do(&roots_closure, roots_from_clds, &roots_in_blobs);
   130 
   132 
   131   // Do the real work
   133   // Do the real work
   132   pm->drain_stacks(false);
   134   pm->drain_stacks(false);
   133 }
   135 }
   134 
   136