Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/shared/gcTrace.hpp @ 20190:0982ec23da03
8043607: Add a GC id as a log decoration similar to PrintGCTimeStamps
Reviewed-by: jwilhelm, ehelin, tschatzl
author | brutisso |
---|---|
date | Thu, 19 Jun 2014 13:31:14 +0200 |
parents | 9fdaa79b0c27 |
children |
comparison
equal
deleted
inserted
replaced
20189:5d855d021755 | 20190:0982ec23da03 |
---|---|
25 #ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GCTRACE_HPP | 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_GCTRACE_HPP |
26 #define SHARE_VM_GC_IMPLEMENTATION_SHARED_GCTRACE_HPP | 26 #define SHARE_VM_GC_IMPLEMENTATION_SHARED_GCTRACE_HPP |
27 | 27 |
28 #include "gc_interface/gcCause.hpp" | 28 #include "gc_interface/gcCause.hpp" |
29 #include "gc_interface/gcName.hpp" | 29 #include "gc_interface/gcName.hpp" |
30 #include "gc_implementation/shared/gcId.hpp" | |
30 #include "gc_implementation/shared/gcWhen.hpp" | 31 #include "gc_implementation/shared/gcWhen.hpp" |
31 #include "gc_implementation/shared/copyFailedInfo.hpp" | 32 #include "gc_implementation/shared/copyFailedInfo.hpp" |
32 #include "memory/allocation.hpp" | 33 #include "memory/allocation.hpp" |
33 #include "memory/metaspace.hpp" | 34 #include "memory/metaspace.hpp" |
34 #include "memory/referenceType.hpp" | 35 #include "memory/referenceType.hpp" |
36 #include "gc_implementation/g1/g1YCTypes.hpp" | 37 #include "gc_implementation/g1/g1YCTypes.hpp" |
37 #endif | 38 #endif |
38 #include "utilities/macros.hpp" | 39 #include "utilities/macros.hpp" |
39 #include "utilities/ticks.hpp" | 40 #include "utilities/ticks.hpp" |
40 | 41 |
41 typedef uint GCId; | |
42 | 42 |
43 class EvacuationInfo; | 43 class EvacuationInfo; |
44 class GCHeapSummary; | 44 class GCHeapSummary; |
45 class MetaspaceChunkFreeListSummary; | 45 class MetaspaceChunkFreeListSummary; |
46 class MetaspaceSummary; | 46 class MetaspaceSummary; |
48 class ReferenceProcessorStats; | 48 class ReferenceProcessorStats; |
49 class TimePartitions; | 49 class TimePartitions; |
50 class BoolObjectClosure; | 50 class BoolObjectClosure; |
51 | 51 |
52 class SharedGCInfo VALUE_OBJ_CLASS_SPEC { | 52 class SharedGCInfo VALUE_OBJ_CLASS_SPEC { |
53 public: | 53 private: |
54 static const GCId UNSET_GCID = (GCId)-1; | 54 GCId _gc_id; |
55 | |
56 private: | |
57 GCId _id; | |
58 GCName _name; | 55 GCName _name; |
59 GCCause::Cause _cause; | 56 GCCause::Cause _cause; |
60 Ticks _start_timestamp; | 57 Ticks _start_timestamp; |
61 Ticks _end_timestamp; | 58 Ticks _end_timestamp; |
62 Tickspan _sum_of_pauses; | 59 Tickspan _sum_of_pauses; |
63 Tickspan _longest_pause; | 60 Tickspan _longest_pause; |
64 | 61 |
65 public: | 62 public: |
66 SharedGCInfo(GCName name) : | 63 SharedGCInfo(GCName name) : |
67 _id(UNSET_GCID), | 64 _gc_id(GCId::undefined()), |
68 _name(name), | 65 _name(name), |
69 _cause(GCCause::_last_gc_cause), | 66 _cause(GCCause::_last_gc_cause), |
70 _start_timestamp(), | 67 _start_timestamp(), |
71 _end_timestamp(), | 68 _end_timestamp(), |
72 _sum_of_pauses(), | 69 _sum_of_pauses(), |
73 _longest_pause() { | 70 _longest_pause() { |
74 } | 71 } |
75 | 72 |
76 void set_id(GCId id) { _id = id; } | 73 void set_gc_id(GCId gc_id) { _gc_id = gc_id; } |
77 GCId id() const { return _id; } | 74 const GCId& gc_id() const { return _gc_id; } |
78 | 75 |
79 void set_start_timestamp(const Ticks& timestamp) { _start_timestamp = timestamp; } | 76 void set_start_timestamp(const Ticks& timestamp) { _start_timestamp = timestamp; } |
80 const Ticks start_timestamp() const { return _start_timestamp; } | 77 const Ticks start_timestamp() const { return _start_timestamp; } |
81 | 78 |
82 void set_end_timestamp(const Ticks& timestamp) { _end_timestamp = timestamp; } | 79 void set_end_timestamp(const Ticks& timestamp) { _end_timestamp = timestamp; } |
129 void report_gc_heap_summary(GCWhen::Type when, const GCHeapSummary& heap_summary) const; | 126 void report_gc_heap_summary(GCWhen::Type when, const GCHeapSummary& heap_summary) const; |
130 void report_metaspace_summary(GCWhen::Type when, const MetaspaceSummary& metaspace_summary) const; | 127 void report_metaspace_summary(GCWhen::Type when, const MetaspaceSummary& metaspace_summary) const; |
131 void report_gc_reference_stats(const ReferenceProcessorStats& rp) const; | 128 void report_gc_reference_stats(const ReferenceProcessorStats& rp) const; |
132 void report_object_count_after_gc(BoolObjectClosure* object_filter) NOT_SERVICES_RETURN; | 129 void report_object_count_after_gc(BoolObjectClosure* object_filter) NOT_SERVICES_RETURN; |
133 bool has_reported_gc_start() const; | 130 bool has_reported_gc_start() const; |
131 const GCId& gc_id() { return _shared_gc_info.gc_id(); } | |
134 | 132 |
135 protected: | 133 protected: |
136 GCTracer(GCName name) : _shared_gc_info(name) {} | 134 GCTracer(GCName name) : _shared_gc_info(name) {} |
137 virtual void report_gc_start_impl(GCCause::Cause cause, const Ticks& timestamp); | 135 void report_gc_start_impl(GCCause::Cause cause, const Ticks& timestamp); |
138 virtual void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions); | 136 virtual void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions); |
139 | 137 |
140 private: | 138 private: |
141 void send_garbage_collection_event() const; | 139 void send_garbage_collection_event() const; |
142 void send_gc_heap_summary_event(GCWhen::Type when, const GCHeapSummary& heap_summary) const; | 140 void send_gc_heap_summary_event(GCWhen::Type when, const GCHeapSummary& heap_summary) const; |