< 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 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   }


< prev index next >