src/share/vm/gc_implementation/g1/heapRegion.cpp

changeset 9861
a248d0be1309
parent 9327
f96fcd9e1e1b
child 9931
fd44df5e3bc3
     1.1 --- a/src/share/vm/gc_implementation/g1/heapRegion.cpp	Wed May 16 15:25:51 2018 +0200
     1.2 +++ b/src/share/vm/gc_implementation/g1/heapRegion.cpp	Mon Aug 19 10:11:31 2019 +0200
     1.3 @@ -37,6 +37,7 @@
     1.4  #include "memory/space.inline.hpp"
     1.5  #include "oops/oop.inline.hpp"
     1.6  #include "runtime/orderAccess.inline.hpp"
     1.7 +#include "gc_implementation/g1/heapRegionTracer.hpp"
     1.8  
     1.9  PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC
    1.10  
    1.11 @@ -211,6 +212,31 @@
    1.12    _gc_efficiency = (double) reclaimable_bytes() / region_elapsed_time_ms;
    1.13  }
    1.14  
    1.15 +void HeapRegion::set_free() {
    1.16 +  report_region_type_change(G1HeapRegionTraceType::Free);
    1.17 +  _type.set_free();
    1.18 +}
    1.19 +
    1.20 +void HeapRegion::set_eden() {
    1.21 +  report_region_type_change(G1HeapRegionTraceType::Eden);
    1.22 +  _type.set_eden();
    1.23 +}
    1.24 +
    1.25 +void HeapRegion::set_eden_pre_gc() {
    1.26 +  report_region_type_change(G1HeapRegionTraceType::Eden);
    1.27 +  _type.set_eden_pre_gc();
    1.28 +}
    1.29 +
    1.30 +void HeapRegion::set_survivor() {
    1.31 +  report_region_type_change(G1HeapRegionTraceType::Survivor);
    1.32 +  _type.set_survivor();
    1.33 +}
    1.34 +
    1.35 +void HeapRegion::set_old() {
    1.36 +  report_region_type_change(G1HeapRegionTraceType::Old);
    1.37 +  _type.set_old();
    1.38 +}
    1.39 +
    1.40  void HeapRegion::set_startsHumongous(HeapWord* new_top, HeapWord* new_end) {
    1.41    assert(!isHumongous(), "sanity / pre-condition");
    1.42    assert(end() == _orig_end,
    1.43 @@ -218,6 +244,7 @@
    1.44    assert(top() == bottom(), "should be empty");
    1.45    assert(bottom() <= new_top && new_top <= new_end, "pre-condition");
    1.46  
    1.47 +  report_region_type_change(G1HeapRegionTraceType::StartsHumongous);
    1.48    _type.set_starts_humongous();
    1.49    _humongous_start_region = this;
    1.50  
    1.51 @@ -232,6 +259,7 @@
    1.52    assert(top() == bottom(), "should be empty");
    1.53    assert(first_hr->startsHumongous(), "pre-condition");
    1.54  
    1.55 +  report_region_type_change(G1HeapRegionTraceType::ContinuesHumongous);
    1.56    _type.set_continues_humongous();
    1.57    _humongous_start_region = first_hr;
    1.58  }
    1.59 @@ -303,6 +331,14 @@
    1.60    record_timestamp();
    1.61  }
    1.62  
    1.63 +void HeapRegion::report_region_type_change(G1HeapRegionTraceType::Type to) {
    1.64 +  HeapRegionTracer::send_region_type_change(_hrm_index,
    1.65 +                                            get_trace_type(),
    1.66 +                                            to,
    1.67 +                                            (uintptr_t)bottom(),
    1.68 +                                            used());
    1.69 +}
    1.70 +
    1.71  CompactibleSpace* HeapRegion::next_compaction_space() const {
    1.72    return G1CollectedHeap::heap()->next_compaction_region(this);
    1.73  }

mercurial