803 { 804 verify_clear(_region_vspace); 805 verify_clear(_block_vspace); 806 } 807 #endif // #ifdef ASSERT 808 809 STWGCTimer PSParallelCompact::_gc_timer; 810 ParallelOldTracer PSParallelCompact::_gc_tracer; 811 elapsedTimer PSParallelCompact::_accumulated_time; 812 unsigned int PSParallelCompact::_total_invocations = 0; 813 unsigned int PSParallelCompact::_maximum_compaction_gc_num = 0; 814 jlong PSParallelCompact::_time_of_last_gc = 0; 815 CollectorCounters* PSParallelCompact::_counters = NULL; 816 ParMarkBitMap PSParallelCompact::_mark_bitmap; 817 ParallelCompactData PSParallelCompact::_summary_data; 818 819 PSParallelCompact::IsAliveClosure PSParallelCompact::_is_alive_closure; 820 821 bool PSParallelCompact::IsAliveClosure::do_object_b(oop p) { return mark_bitmap()->is_marked(p); } 822 823 void PSParallelCompact::KeepAliveClosure::do_oop(oop* p) { PSParallelCompact::KeepAliveClosure::do_oop_work(p); } 824 void PSParallelCompact::KeepAliveClosure::do_oop(narrowOop* p) { PSParallelCompact::KeepAliveClosure::do_oop_work(p); } 825 826 PSParallelCompact::AdjustPointerClosure PSParallelCompact::_adjust_pointer_closure; 827 PSParallelCompact::AdjustKlassClosure PSParallelCompact::_adjust_klass_closure; 828 829 void PSParallelCompact::FollowStackClosure::do_void() { _compaction_manager->follow_marking_stacks(); } 830 831 void PSParallelCompact::FollowKlassClosure::do_klass(Klass* klass) { 832 klass->oops_do(_mark_and_push_closure); 833 } 834 void PSParallelCompact::AdjustKlassClosure::do_klass(Klass* klass) { 835 klass->oops_do(&PSParallelCompact::_adjust_pointer_closure); 836 } 837 838 void PSParallelCompact::post_initialize() { 839 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap(); 840 MemRegion mr = heap->reserved_region(); 841 _ref_processor = 842 new ReferenceProcessor(mr, // span 843 ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing 844 (int) ParallelGCThreads, // mt processing degree 845 true, // mt discovery | 803 { 804 verify_clear(_region_vspace); 805 verify_clear(_block_vspace); 806 } 807 #endif // #ifdef ASSERT 808 809 STWGCTimer PSParallelCompact::_gc_timer; 810 ParallelOldTracer PSParallelCompact::_gc_tracer; 811 elapsedTimer PSParallelCompact::_accumulated_time; 812 unsigned int PSParallelCompact::_total_invocations = 0; 813 unsigned int PSParallelCompact::_maximum_compaction_gc_num = 0; 814 jlong PSParallelCompact::_time_of_last_gc = 0; 815 CollectorCounters* PSParallelCompact::_counters = NULL; 816 ParMarkBitMap PSParallelCompact::_mark_bitmap; 817 ParallelCompactData PSParallelCompact::_summary_data; 818 819 PSParallelCompact::IsAliveClosure PSParallelCompact::_is_alive_closure; 820 821 bool PSParallelCompact::IsAliveClosure::do_object_b(oop p) { return mark_bitmap()->is_marked(p); } 822 823 PSParallelCompact::AdjustPointerClosure PSParallelCompact::_adjust_pointer_closure; 824 PSParallelCompact::AdjustKlassClosure PSParallelCompact::_adjust_klass_closure; 825 826 void PSParallelCompact::FollowStackClosure::do_void() { _compaction_manager->follow_marking_stacks(); } 827 828 void PSParallelCompact::FollowKlassClosure::do_klass(Klass* klass) { 829 klass->oops_do(_mark_and_push_closure); 830 } 831 void PSParallelCompact::AdjustKlassClosure::do_klass(Klass* klass) { 832 klass->oops_do(&PSParallelCompact::_adjust_pointer_closure); 833 } 834 835 void PSParallelCompact::post_initialize() { 836 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap(); 837 MemRegion mr = heap->reserved_region(); 838 _ref_processor = 839 new ReferenceProcessor(mr, // span 840 ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing 841 (int) ParallelGCThreads, // mt processing degree 842 true, // mt discovery |