< prev index next >

src/hotspot/share/gc/parallel/psParallelCompact.cpp

Print this page
rev 49912 : imported patch 8201492-properly-implement-non-contiguous-reference-processing
rev 49913 : imported patch 8201492-stefanj-review
rev 49914 : [mq]: 8201492-kim-review


 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_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_discoverer.set_span(heap->reserved_region());
 848   _ref_processor =
 849     new ReferenceProcessor(&_span_discoverer,   // span
 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   }




 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   }


< prev index next >