hotspot/src/share/vm/gc_implementation/parallelScavenge/psMarkSweep.cpp
changeset 25491 70fb742e40aa
parent 25490 59f226da8d81
child 25492 d27050bdfb04
equal deleted inserted replaced
25490:59f226da8d81 25491:70fb742e40aa
   534   {
   534   {
   535     ParallelScavengeHeap::ParStrongRootsScope psrs;
   535     ParallelScavengeHeap::ParStrongRootsScope psrs;
   536     Universe::oops_do(mark_and_push_closure());
   536     Universe::oops_do(mark_and_push_closure());
   537     JNIHandles::oops_do(mark_and_push_closure());   // Global (strong) JNI handles
   537     JNIHandles::oops_do(mark_and_push_closure());   // Global (strong) JNI handles
   538     CLDToOopClosure mark_and_push_from_cld(mark_and_push_closure());
   538     CLDToOopClosure mark_and_push_from_cld(mark_and_push_closure());
   539     MarkingCodeBlobClosure each_active_code_blob(mark_and_push_closure(), !CodeBlobToOopClosure::FixRelocations);
   539     CodeBlobToOopClosure each_active_code_blob(mark_and_push_closure(), /*do_marking=*/ true);
   540     Threads::oops_do(mark_and_push_closure(), &mark_and_push_from_cld, &each_active_code_blob);
   540     Threads::oops_do(mark_and_push_closure(), &mark_and_push_from_cld, &each_active_code_blob);
   541     ObjectSynchronizer::oops_do(mark_and_push_closure());
   541     ObjectSynchronizer::oops_do(mark_and_push_closure());
   542     FlatProfiler::oops_do(mark_and_push_closure());
   542     FlatProfiler::oops_do(mark_and_push_closure());
   543     Management::oops_do(mark_and_push_closure());
   543     Management::oops_do(mark_and_push_closure());
   544     JvmtiExport::oops_do(mark_and_push_closure());
   544     JvmtiExport::oops_do(mark_and_push_closure());
   545     SystemDictionary::always_strong_oops_do(mark_and_push_closure());
   545     SystemDictionary::always_strong_oops_do(mark_and_push_closure());
   546     ClassLoaderDataGraph::always_strong_cld_do(follow_cld_closure());
   546     ClassLoaderDataGraph::always_strong_oops_do(mark_and_push_closure(), follow_klass_closure(), true);
   547     // Do not treat nmethods as strong roots for mark/sweep, since we can unload them.
   547     // Do not treat nmethods as strong roots for mark/sweep, since we can unload them.
   548     //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure()));
   548     //CodeCache::scavenge_root_nmethods_do(CodeBlobToOopClosure(mark_and_push_closure()));
   549   }
   549   }
   550 
   550 
   551   // Flush marking stack.
   551   // Flush marking stack.
   631   Threads::oops_do(adjust_pointer_closure(), &adjust_from_cld, NULL);
   631   Threads::oops_do(adjust_pointer_closure(), &adjust_from_cld, NULL);
   632   ObjectSynchronizer::oops_do(adjust_pointer_closure());
   632   ObjectSynchronizer::oops_do(adjust_pointer_closure());
   633   FlatProfiler::oops_do(adjust_pointer_closure());
   633   FlatProfiler::oops_do(adjust_pointer_closure());
   634   Management::oops_do(adjust_pointer_closure());
   634   Management::oops_do(adjust_pointer_closure());
   635   JvmtiExport::oops_do(adjust_pointer_closure());
   635   JvmtiExport::oops_do(adjust_pointer_closure());
       
   636   // SO_AllClasses
   636   SystemDictionary::oops_do(adjust_pointer_closure());
   637   SystemDictionary::oops_do(adjust_pointer_closure());
   637   ClassLoaderDataGraph::cld_do(adjust_cld_closure());
   638   ClassLoaderDataGraph::oops_do(adjust_pointer_closure(), adjust_klass_closure(), true);
   638 
   639 
   639   // Now adjust pointers in remaining weak roots.  (All of which should
   640   // Now adjust pointers in remaining weak roots.  (All of which should
   640   // have been cleared if they pointed to non-surviving objects.)
   641   // have been cleared if they pointed to non-surviving objects.)
   641   // Global (weak) JNI handles
   642   // Global (weak) JNI handles
   642   JNIHandles::weak_oops_do(&always_true, adjust_pointer_closure());
   643   JNIHandles::weak_oops_do(&always_true, adjust_pointer_closure());
   643 
   644 
   644   CodeBlobToOopClosure adjust_from_blobs(adjust_pointer_closure(), CodeBlobToOopClosure::FixRelocations);
   645   CodeCache::oops_do(adjust_pointer_closure());
   645   CodeCache::blobs_do(&adjust_from_blobs);
       
   646   StringTable::oops_do(adjust_pointer_closure());
   646   StringTable::oops_do(adjust_pointer_closure());
   647   ref_processor()->weak_oops_do(adjust_pointer_closure());
   647   ref_processor()->weak_oops_do(adjust_pointer_closure());
   648   PSScavenge::reference_processor()->weak_oops_do(adjust_pointer_closure());
   648   PSScavenge::reference_processor()->weak_oops_do(adjust_pointer_closure());
   649 
   649 
   650   adjust_marks();
   650   adjust_marks();