100 const ParallelCompactData::RegionData::region_sz_t
101 ParallelCompactData::RegionData::dc_shift = 27;
102
103 const ParallelCompactData::RegionData::region_sz_t
104 ParallelCompactData::RegionData::dc_mask = ~0U << dc_shift;
105
106 const ParallelCompactData::RegionData::region_sz_t
107 ParallelCompactData::RegionData::dc_one = 0x1U << dc_shift;
108
109 const ParallelCompactData::RegionData::region_sz_t
110 ParallelCompactData::RegionData::los_mask = ~dc_mask;
111
112 const ParallelCompactData::RegionData::region_sz_t
113 ParallelCompactData::RegionData::dc_claimed = 0x8U << dc_shift;
114
115 const ParallelCompactData::RegionData::region_sz_t
116 ParallelCompactData::RegionData::dc_completed = 0xcU << dc_shift;
117
118 SpaceInfo PSParallelCompact::_space_info[PSParallelCompact::last_space_id];
119
120 ReferenceProcessor* PSParallelCompact::_ref_processor = NULL;
121
122 double PSParallelCompact::_dwl_mean;
123 double PSParallelCompact::_dwl_std_dev;
124 double PSParallelCompact::_dwl_first_term;
125 double PSParallelCompact::_dwl_adjustment;
126 #ifdef ASSERT
127 bool PSParallelCompact::_dwl_initialized = false;
128 #endif // #ifdef ASSERT
129
130 void SplitInfo::record(size_t src_region_idx, size_t partial_obj_size,
131 HeapWord* destination)
132 {
133 assert(src_region_idx != 0, "invalid src_region_idx");
134 assert(partial_obj_size != 0, "invalid partial_obj_size argument");
135 assert(destination != NULL, "invalid destination argument");
136
137 _src_region_idx = src_region_idx;
138 _partial_obj_size = partial_obj_size;
139 _destination = destination;
826 verify_clear(_block_vspace);
827 }
828 #endif // #ifdef ASSERT
829
830 STWGCTimer PSParallelCompact::_gc_timer;
831 ParallelOldTracer PSParallelCompact::_gc_tracer;
832 elapsedTimer PSParallelCompact::_accumulated_time;
833 unsigned int PSParallelCompact::_total_invocations = 0;
834 unsigned int PSParallelCompact::_maximum_compaction_gc_num = 0;
835 jlong PSParallelCompact::_time_of_last_gc = 0;
836 CollectorCounters* PSParallelCompact::_counters = NULL;
837 ParMarkBitMap PSParallelCompact::_mark_bitmap;
838 ParallelCompactData PSParallelCompact::_summary_data;
839
840 PSParallelCompact::IsAliveClosure PSParallelCompact::_is_alive_closure;
841
842 bool PSParallelCompact::IsAliveClosure::do_object_b(oop p) { return mark_bitmap()->is_marked(p); }
843
844 void PSParallelCompact::post_initialize() {
845 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
846 MemRegion mr = heap->reserved_region();
847 _ref_processor =
848 new ReferenceProcessor(mr, // span
849 ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
850 ParallelGCThreads, // mt processing degree
851 true, // mt discovery
852 ParallelGCThreads, // mt discovery degree
853 true, // atomic_discovery
854 &_is_alive_closure); // non-header is alive closure
855 _counters = new CollectorCounters("PSParallelCompact", 1);
856
857 // Initialize static fields in ParCompactionManager.
858 ParCompactionManager::initialize(mark_bitmap());
859 }
860
861 bool PSParallelCompact::initialize() {
862 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
863 MemRegion mr = heap->reserved_region();
864
865 // Was the old gen get allocated successfully?
866 if (!heap->old_gen()->is_allocated()) {
867 return false;
868 }
|
100 const ParallelCompactData::RegionData::region_sz_t
101 ParallelCompactData::RegionData::dc_shift = 27;
102
103 const ParallelCompactData::RegionData::region_sz_t
104 ParallelCompactData::RegionData::dc_mask = ~0U << dc_shift;
105
106 const ParallelCompactData::RegionData::region_sz_t
107 ParallelCompactData::RegionData::dc_one = 0x1U << dc_shift;
108
109 const ParallelCompactData::RegionData::region_sz_t
110 ParallelCompactData::RegionData::los_mask = ~dc_mask;
111
112 const ParallelCompactData::RegionData::region_sz_t
113 ParallelCompactData::RegionData::dc_claimed = 0x8U << dc_shift;
114
115 const ParallelCompactData::RegionData::region_sz_t
116 ParallelCompactData::RegionData::dc_completed = 0xcU << dc_shift;
117
118 SpaceInfo PSParallelCompact::_space_info[PSParallelCompact::last_space_id];
119
120 SpanSubjectToDiscoveryClosure PSParallelCompact::_span_based_discoverer;
121 ReferenceProcessor* PSParallelCompact::_ref_processor = NULL;
122
123 double PSParallelCompact::_dwl_mean;
124 double PSParallelCompact::_dwl_std_dev;
125 double PSParallelCompact::_dwl_first_term;
126 double PSParallelCompact::_dwl_adjustment;
127 #ifdef ASSERT
128 bool PSParallelCompact::_dwl_initialized = false;
129 #endif // #ifdef ASSERT
130
131 void SplitInfo::record(size_t src_region_idx, size_t partial_obj_size,
132 HeapWord* destination)
133 {
134 assert(src_region_idx != 0, "invalid src_region_idx");
135 assert(partial_obj_size != 0, "invalid partial_obj_size argument");
136 assert(destination != NULL, "invalid destination argument");
137
138 _src_region_idx = src_region_idx;
139 _partial_obj_size = partial_obj_size;
140 _destination = destination;
827 verify_clear(_block_vspace);
828 }
829 #endif // #ifdef ASSERT
830
831 STWGCTimer PSParallelCompact::_gc_timer;
832 ParallelOldTracer PSParallelCompact::_gc_tracer;
833 elapsedTimer PSParallelCompact::_accumulated_time;
834 unsigned int PSParallelCompact::_total_invocations = 0;
835 unsigned int PSParallelCompact::_maximum_compaction_gc_num = 0;
836 jlong PSParallelCompact::_time_of_last_gc = 0;
837 CollectorCounters* PSParallelCompact::_counters = NULL;
838 ParMarkBitMap PSParallelCompact::_mark_bitmap;
839 ParallelCompactData PSParallelCompact::_summary_data;
840
841 PSParallelCompact::IsAliveClosure PSParallelCompact::_is_alive_closure;
842
843 bool PSParallelCompact::IsAliveClosure::do_object_b(oop p) { return mark_bitmap()->is_marked(p); }
844
845 void PSParallelCompact::post_initialize() {
846 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
847 _span_based_discoverer.set_span(heap->reserved_region());
848 _ref_processor =
849 new ReferenceProcessor(&_span_based_discoverer,
850 ParallelRefProcEnabled && (ParallelGCThreads > 1), // mt processing
851 ParallelGCThreads, // mt processing degree
852 true, // mt discovery
853 ParallelGCThreads, // mt discovery degree
854 true, // atomic_discovery
855 &_is_alive_closure); // non-header is alive closure
856 _counters = new CollectorCounters("PSParallelCompact", 1);
857
858 // Initialize static fields in ParCompactionManager.
859 ParCompactionManager::initialize(mark_bitmap());
860 }
861
862 bool PSParallelCompact::initialize() {
863 ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
864 MemRegion mr = heap->reserved_region();
865
866 // Was the old gen get allocated successfully?
867 if (!heap->old_gen()->is_allocated()) {
868 return false;
869 }
|