< prev index next >

src/hotspot/share/gc/shared/collectedHeap.cpp

Print this page
rev 47864 : 8191564: Refactor GC related servicability code into GC specific subclasses


 155 // default implementations, for collectors which don't support this
 156 // feature.
 157 bool CollectedHeap::supports_concurrent_phase_control() const {
 158   return false;
 159 }
 160 
 161 const char* const* CollectedHeap::concurrent_phases() const {
 162   static const char* const result[] = { NULL };
 163   return result;
 164 }
 165 
 166 bool CollectedHeap::request_concurrent_phase(const char* phase) {
 167   return false;
 168 }
 169 
 170 // Memory state functions.
 171 
 172 
 173 CollectedHeap::CollectedHeap() :
 174   _barrier_set(NULL),

 175   _is_gc_active(false),
 176   _total_collections(0),
 177   _total_full_collections(0),
 178   _gc_cause(GCCause::_no_gc),
 179   _gc_lastcause(GCCause::_no_gc),
 180   _defer_initial_card_mark(false) // strengthened by subclass in pre_initialize() below.
 181 {
 182   const size_t max_len = size_t(arrayOopDesc::max_array_length(T_INT));
 183   const size_t elements_per_word = HeapWordSize / sizeof(jint);
 184   _filler_array_max_size = align_object_size(filler_array_hdr_size() +
 185                                              max_len / elements_per_word);
 186 
 187   NOT_PRODUCT(_promotion_failure_alot_count = 0;)
 188   NOT_PRODUCT(_promotion_failure_alot_gc_number = 0;)
 189 
 190   if (UsePerfData) {
 191     EXCEPTION_MARK;
 192 
 193     // create the gc cause jvmstat counters
 194     _perf_gc_cause = PerfDataManager::create_string_variable(SUN_GC, "cause",


 591     LogStream ls(lt);
 592     VM_GC_HeapInspection inspector(&ls, false /* ! full gc */);
 593     inspector.doit();
 594   }
 595 }
 596 
 597 void CollectedHeap::pre_full_gc_dump(GCTimer* timer) {
 598   full_gc_dump(timer, true);
 599 }
 600 
 601 void CollectedHeap::post_full_gc_dump(GCTimer* timer) {
 602   full_gc_dump(timer, false);
 603 }
 604 
 605 void CollectedHeap::initialize_reserved_region(HeapWord *start, HeapWord *end) {
 606   // It is important to do this in a way such that concurrent readers can't
 607   // temporarily think something is in the heap.  (Seen this happen in asserts.)
 608   _reserved.set_word_size(0);
 609   _reserved.set_start(start);
 610   _reserved.set_end(end);








 611 }


 155 // default implementations, for collectors which don't support this
 156 // feature.
 157 bool CollectedHeap::supports_concurrent_phase_control() const {
 158   return false;
 159 }
 160 
 161 const char* const* CollectedHeap::concurrent_phases() const {
 162   static const char* const result[] = { NULL };
 163   return result;
 164 }
 165 
 166 bool CollectedHeap::request_concurrent_phase(const char* phase) {
 167   return false;
 168 }
 169 
 170 // Memory state functions.
 171 
 172 
 173 CollectedHeap::CollectedHeap() :
 174   _barrier_set(NULL),
 175   _servicability(NULL),
 176   _is_gc_active(false),
 177   _total_collections(0),
 178   _total_full_collections(0),
 179   _gc_cause(GCCause::_no_gc),
 180   _gc_lastcause(GCCause::_no_gc),
 181   _defer_initial_card_mark(false) // strengthened by subclass in pre_initialize() below.
 182 {
 183   const size_t max_len = size_t(arrayOopDesc::max_array_length(T_INT));
 184   const size_t elements_per_word = HeapWordSize / sizeof(jint);
 185   _filler_array_max_size = align_object_size(filler_array_hdr_size() +
 186                                              max_len / elements_per_word);
 187 
 188   NOT_PRODUCT(_promotion_failure_alot_count = 0;)
 189   NOT_PRODUCT(_promotion_failure_alot_gc_number = 0;)
 190 
 191   if (UsePerfData) {
 192     EXCEPTION_MARK;
 193 
 194     // create the gc cause jvmstat counters
 195     _perf_gc_cause = PerfDataManager::create_string_variable(SUN_GC, "cause",


 592     LogStream ls(lt);
 593     VM_GC_HeapInspection inspector(&ls, false /* ! full gc */);
 594     inspector.doit();
 595   }
 596 }
 597 
 598 void CollectedHeap::pre_full_gc_dump(GCTimer* timer) {
 599   full_gc_dump(timer, true);
 600 }
 601 
 602 void CollectedHeap::post_full_gc_dump(GCTimer* timer) {
 603   full_gc_dump(timer, false);
 604 }
 605 
 606 void CollectedHeap::initialize_reserved_region(HeapWord *start, HeapWord *end) {
 607   // It is important to do this in a way such that concurrent readers can't
 608   // temporarily think something is in the heap.  (Seen this happen in asserts.)
 609   _reserved.set_word_size(0);
 610   _reserved.set_start(start);
 611   _reserved.set_end(end);
 612 }
 613 
 614 GCServicabilitySupport* CollectedHeap::servicability_support() {
 615   if (_servicability == NULL) {
 616     _servicability = create_servicability_support();
 617   }
 618   assert(_servicability != NULL, "Need servicability support");
 619   return _servicability;
 620 }
< prev index next >