comparison src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp @ 10179:a08c80e9e1e5

8012687: Remove unused is_root checks and closures Reviewed-by: tschatzl, jmasa
author stefank
date Mon, 22 Apr 2013 20:27:36 +0200
parents 7b835924c31c
children 868d87ed63c8
comparison
equal deleted inserted replaced
10178:d391427ddc29 10179:a08c80e9e1e5
785 bool PSParallelCompact::IsAliveClosure::do_object_b(oop p) { return mark_bitmap()->is_marked(p); } 785 bool PSParallelCompact::IsAliveClosure::do_object_b(oop p) { return mark_bitmap()->is_marked(p); }
786 786
787 void PSParallelCompact::KeepAliveClosure::do_oop(oop* p) { PSParallelCompact::KeepAliveClosure::do_oop_work(p); } 787 void PSParallelCompact::KeepAliveClosure::do_oop(oop* p) { PSParallelCompact::KeepAliveClosure::do_oop_work(p); }
788 void PSParallelCompact::KeepAliveClosure::do_oop(narrowOop* p) { PSParallelCompact::KeepAliveClosure::do_oop_work(p); } 788 void PSParallelCompact::KeepAliveClosure::do_oop(narrowOop* p) { PSParallelCompact::KeepAliveClosure::do_oop_work(p); }
789 789
790 PSParallelCompact::AdjustPointerClosure PSParallelCompact::_adjust_root_pointer_closure(true); 790 PSParallelCompact::AdjustPointerClosure PSParallelCompact::_adjust_pointer_closure;
791 PSParallelCompact::AdjustPointerClosure PSParallelCompact::_adjust_pointer_closure(false);
792 PSParallelCompact::AdjustKlassClosure PSParallelCompact::_adjust_klass_closure; 791 PSParallelCompact::AdjustKlassClosure PSParallelCompact::_adjust_klass_closure;
793 792
794 void PSParallelCompact::AdjustPointerClosure::do_oop(oop* p) { adjust_pointer(p, _is_root); } 793 void PSParallelCompact::AdjustPointerClosure::do_oop(oop* p) { adjust_pointer(p); }
795 void PSParallelCompact::AdjustPointerClosure::do_oop(narrowOop* p) { adjust_pointer(p, _is_root); } 794 void PSParallelCompact::AdjustPointerClosure::do_oop(narrowOop* p) { adjust_pointer(p); }
796 795
797 void PSParallelCompact::FollowStackClosure::do_void() { _compaction_manager->follow_marking_stacks(); } 796 void PSParallelCompact::FollowStackClosure::do_void() { _compaction_manager->follow_marking_stacks(); }
798 797
799 void PSParallelCompact::MarkAndPushClosure::do_oop(oop* p) { 798 void PSParallelCompact::MarkAndPushClosure::do_oop(oop* p) {
800 mark_and_push(_compaction_manager, p); 799 mark_and_push(_compaction_manager, p);
803 802
804 void PSParallelCompact::FollowKlassClosure::do_klass(Klass* klass) { 803 void PSParallelCompact::FollowKlassClosure::do_klass(Klass* klass) {
805 klass->oops_do(_mark_and_push_closure); 804 klass->oops_do(_mark_and_push_closure);
806 } 805 }
807 void PSParallelCompact::AdjustKlassClosure::do_klass(Klass* klass) { 806 void PSParallelCompact::AdjustKlassClosure::do_klass(Klass* klass) {
808 klass->oops_do(&PSParallelCompact::_adjust_root_pointer_closure); 807 klass->oops_do(&PSParallelCompact::_adjust_pointer_closure);
809 } 808 }
810 809
811 void PSParallelCompact::post_initialize() { 810 void PSParallelCompact::post_initialize() {
812 ParallelScavengeHeap* heap = gc_heap(); 811 ParallelScavengeHeap* heap = gc_heap();
813 assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity"); 812 assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
2396 cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true); 2395 cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true);
2397 } 2396 }
2398 2397
2399 void PSParallelCompact::adjust_class_loader(ParCompactionManager* cm, 2398 void PSParallelCompact::adjust_class_loader(ParCompactionManager* cm,
2400 ClassLoaderData* cld) { 2399 ClassLoaderData* cld) {
2401 cld->oops_do(PSParallelCompact::adjust_root_pointer_closure(), 2400 cld->oops_do(PSParallelCompact::adjust_pointer_closure(),
2402 PSParallelCompact::adjust_klass_closure(), 2401 PSParallelCompact::adjust_klass_closure(),
2403 true); 2402 true);
2404 } 2403 }
2405 2404
2406 // This should be moved to the shared markSweep code! 2405 // This should be moved to the shared markSweep code!
2417 2416
2418 // Need new claim bits when tracing through and adjusting pointers. 2417 // Need new claim bits when tracing through and adjusting pointers.
2419 ClassLoaderDataGraph::clear_claimed_marks(); 2418 ClassLoaderDataGraph::clear_claimed_marks();
2420 2419
2421 // General strong roots. 2420 // General strong roots.
2422 Universe::oops_do(adjust_root_pointer_closure()); 2421 Universe::oops_do(adjust_pointer_closure());
2423 JNIHandles::oops_do(adjust_root_pointer_closure()); // Global (strong) JNI handles 2422 JNIHandles::oops_do(adjust_pointer_closure()); // Global (strong) JNI handles
2424 CLDToOopClosure adjust_from_cld(adjust_root_pointer_closure()); 2423 CLDToOopClosure adjust_from_cld(adjust_pointer_closure());
2425 Threads::oops_do(adjust_root_pointer_closure(), &adjust_from_cld, NULL); 2424 Threads::oops_do(adjust_pointer_closure(), &adjust_from_cld, NULL);
2426 ObjectSynchronizer::oops_do(adjust_root_pointer_closure()); 2425 ObjectSynchronizer::oops_do(adjust_pointer_closure());
2427 FlatProfiler::oops_do(adjust_root_pointer_closure()); 2426 FlatProfiler::oops_do(adjust_pointer_closure());
2428 Management::oops_do(adjust_root_pointer_closure()); 2427 Management::oops_do(adjust_pointer_closure());
2429 JvmtiExport::oops_do(adjust_root_pointer_closure()); 2428 JvmtiExport::oops_do(adjust_pointer_closure());
2430 // SO_AllClasses 2429 // SO_AllClasses
2431 SystemDictionary::oops_do(adjust_root_pointer_closure()); 2430 SystemDictionary::oops_do(adjust_pointer_closure());
2432 ClassLoaderDataGraph::oops_do(adjust_root_pointer_closure(), adjust_klass_closure(), true); 2431 ClassLoaderDataGraph::oops_do(adjust_pointer_closure(), adjust_klass_closure(), true);
2433 2432
2434 // Now adjust pointers in remaining weak roots. (All of which should 2433 // Now adjust pointers in remaining weak roots. (All of which should
2435 // have been cleared if they pointed to non-surviving objects.) 2434 // have been cleared if they pointed to non-surviving objects.)
2436 // Global (weak) JNI handles 2435 // Global (weak) JNI handles
2437 JNIHandles::weak_oops_do(&always_true, adjust_root_pointer_closure()); 2436 JNIHandles::weak_oops_do(&always_true, adjust_pointer_closure());
2438 2437
2439 CodeCache::oops_do(adjust_pointer_closure()); 2438 CodeCache::oops_do(adjust_pointer_closure());
2440 StringTable::oops_do(adjust_root_pointer_closure()); 2439 StringTable::oops_do(adjust_pointer_closure());
2441 ref_processor()->weak_oops_do(adjust_root_pointer_closure()); 2440 ref_processor()->weak_oops_do(adjust_pointer_closure());
2442 // Roots were visited so references into the young gen in roots 2441 // Roots were visited so references into the young gen in roots
2443 // may have been scanned. Process them also. 2442 // may have been scanned. Process them also.
2444 // Should the reference processor have a span that excludes 2443 // Should the reference processor have a span that excludes
2445 // young gen objects? 2444 // young gen objects?
2446 PSScavenge::reference_processor()->weak_oops_do( 2445 PSScavenge::reference_processor()->weak_oops_do(adjust_pointer_closure());
2447 adjust_root_pointer_closure());
2448 } 2446 }
2449 2447
2450 void PSParallelCompact::enqueue_region_draining_tasks(GCTaskQueue* q, 2448 void PSParallelCompact::enqueue_region_draining_tasks(GCTaskQueue* q,
2451 uint parallel_gc_threads) 2449 uint parallel_gc_threads)
2452 { 2450 {