< prev index next >

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

Print this page




 593   PSOldGen* old_gen = heap->old_gen();
 594 
 595   // Need to clear claim bits before the tracing starts.
 596   ClassLoaderDataGraph::clear_claimed_marks();
 597 
 598   // General strong roots.
 599   Universe::oops_do(adjust_pointer_closure());
 600   JNIHandles::oops_do(adjust_pointer_closure());   // Global (strong) JNI handles
 601   Threads::oops_do(adjust_pointer_closure(), NULL);
 602   ObjectSynchronizer::oops_do(adjust_pointer_closure());
 603   FlatProfiler::oops_do(adjust_pointer_closure());
 604   Management::oops_do(adjust_pointer_closure());
 605   JvmtiExport::oops_do(adjust_pointer_closure());
 606   SystemDictionary::oops_do(adjust_pointer_closure());
 607   ClassLoaderDataGraph::cld_do(adjust_cld_closure());
 608 
 609   // Now adjust pointers in remaining weak roots.  (All of which should
 610   // have been cleared if they pointed to non-surviving objects.)
 611   // Global (weak) JNI handles
 612   JNIHandles::weak_oops_do(adjust_pointer_closure());

 613 
 614   CodeBlobToOopClosure adjust_from_blobs(adjust_pointer_closure(), CodeBlobToOopClosure::FixRelocations);
 615   CodeCache::blobs_do(&adjust_from_blobs);
 616   AOTLoader::oops_do(adjust_pointer_closure());
 617   StringTable::oops_do(adjust_pointer_closure());
 618   ref_processor()->weak_oops_do(adjust_pointer_closure());
 619   PSScavenge::reference_processor()->weak_oops_do(adjust_pointer_closure());
 620 
 621   adjust_marks();
 622 
 623   young_gen->adjust_pointers();
 624   old_gen->adjust_pointers();
 625 }
 626 
 627 void PSMarkSweep::mark_sweep_phase4() {
 628   EventMark m("4 compact heap");
 629   GCTraceTime(Info, gc, phases) tm("Phase 4: Move objects", _gc_timer);
 630 
 631   // All pointers are now adjusted, move objects accordingly
 632 




 593   PSOldGen* old_gen = heap->old_gen();
 594 
 595   // Need to clear claim bits before the tracing starts.
 596   ClassLoaderDataGraph::clear_claimed_marks();
 597 
 598   // General strong roots.
 599   Universe::oops_do(adjust_pointer_closure());
 600   JNIHandles::oops_do(adjust_pointer_closure());   // Global (strong) JNI handles
 601   Threads::oops_do(adjust_pointer_closure(), NULL);
 602   ObjectSynchronizer::oops_do(adjust_pointer_closure());
 603   FlatProfiler::oops_do(adjust_pointer_closure());
 604   Management::oops_do(adjust_pointer_closure());
 605   JvmtiExport::oops_do(adjust_pointer_closure());
 606   SystemDictionary::oops_do(adjust_pointer_closure());
 607   ClassLoaderDataGraph::cld_do(adjust_cld_closure());
 608 
 609   // Now adjust pointers in remaining weak roots.  (All of which should
 610   // have been cleared if they pointed to non-surviving objects.)
 611   // Global (weak) JNI handles
 612   JNIHandles::weak_oops_do(adjust_pointer_closure());
 613   HeapMonitoring::do_weak_oops(adjust_pointer_closure());
 614 
 615   CodeBlobToOopClosure adjust_from_blobs(adjust_pointer_closure(), CodeBlobToOopClosure::FixRelocations);
 616   CodeCache::blobs_do(&adjust_from_blobs);
 617   AOTLoader::oops_do(adjust_pointer_closure());
 618   StringTable::oops_do(adjust_pointer_closure());
 619   ref_processor()->weak_oops_do(adjust_pointer_closure());
 620   PSScavenge::reference_processor()->weak_oops_do(adjust_pointer_closure());
 621 
 622   adjust_marks();
 623 
 624   young_gen->adjust_pointers();
 625   old_gen->adjust_pointers();
 626 }
 627 
 628 void PSMarkSweep::mark_sweep_phase4() {
 629   EventMark m("4 compact heap");
 630   GCTraceTime(Info, gc, phases) tm("Phase 4: Move objects", _gc_timer);
 631 
 632   // All pointers are now adjusted, move objects accordingly
 633 


< prev index next >