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 }