Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/shared/gcTraceSend.cpp @ 12179:f175e3678be2
8020692: TestGCEventMixed.java failed because of timestamp in event after end event
Reviewed-by: mgerdin, stefank
author | ehelin |
---|---|
date | Thu, 22 Aug 2013 11:23:15 +0200 |
parents | 2cbc8f3011a0 |
children | 86e6d691f2e1 |
comparison
equal
deleted
inserted
replaced
12178:84683e78e713 | 12179:f175e3678be2 |
---|---|
26 #include "gc_implementation/shared/gcHeapSummary.hpp" | 26 #include "gc_implementation/shared/gcHeapSummary.hpp" |
27 #include "gc_implementation/shared/gcTimer.hpp" | 27 #include "gc_implementation/shared/gcTimer.hpp" |
28 #include "gc_implementation/shared/gcTrace.hpp" | 28 #include "gc_implementation/shared/gcTrace.hpp" |
29 #include "gc_implementation/shared/gcWhen.hpp" | 29 #include "gc_implementation/shared/gcWhen.hpp" |
30 #include "gc_implementation/shared/copyFailedInfo.hpp" | 30 #include "gc_implementation/shared/copyFailedInfo.hpp" |
31 #include "runtime/os.hpp" | |
31 #include "trace/tracing.hpp" | 32 #include "trace/tracing.hpp" |
32 #include "trace/traceBackend.hpp" | 33 #include "trace/traceBackend.hpp" |
33 #if INCLUDE_ALL_GCS | 34 #if INCLUDE_ALL_GCS |
34 #include "gc_implementation/g1/evacuationInfo.hpp" | 35 #include "gc_implementation/g1/evacuationInfo.hpp" |
35 #include "gc_implementation/g1/g1YCTypes.hpp" | 36 #include "gc_implementation/g1/g1YCTypes.hpp" |
52 event.commit(); | 53 event.commit(); |
53 } | 54 } |
54 } | 55 } |
55 | 56 |
56 void GCTracer::send_reference_stats_event(ReferenceType type, size_t count) const { | 57 void GCTracer::send_reference_stats_event(ReferenceType type, size_t count) const { |
57 EventGCReferenceStatistics e; | 58 EventGCReferenceStatistics e(UNTIMED); |
58 if (e.should_commit()) { | 59 if (e.should_commit()) { |
59 e.set_gcId(_shared_gc_info.id()); | 60 e.set_gcId(_shared_gc_info.id()); |
60 e.set_type((u1)type); | 61 e.set_type((u1)type); |
61 e.set_count(count); | 62 e.set_count(count); |
63 e.set_endtime(os::elapsed_counter()); | |
62 e.commit(); | 64 e.commit(); |
63 } | 65 } |
64 } | 66 } |
65 | 67 |
66 void ParallelOldTracer::send_parallel_old_event() const { | 68 void ParallelOldTracer::send_parallel_old_event() const { |
103 failed_info.set_totalSize(cf_info.total_size()); | 105 failed_info.set_totalSize(cf_info.total_size()); |
104 return failed_info; | 106 return failed_info; |
105 } | 107 } |
106 | 108 |
107 void YoungGCTracer::send_promotion_failed_event(const PromotionFailedInfo& pf_info) const { | 109 void YoungGCTracer::send_promotion_failed_event(const PromotionFailedInfo& pf_info) const { |
108 EventPromotionFailed e; | 110 EventPromotionFailed e(UNTIMED); |
109 if (e.should_commit()) { | 111 if (e.should_commit()) { |
110 e.set_gcId(_shared_gc_info.id()); | 112 e.set_gcId(_shared_gc_info.id()); |
111 e.set_data(to_trace_struct(pf_info)); | 113 e.set_data(to_trace_struct(pf_info)); |
112 e.set_thread(pf_info.thread()->thread_id()); | 114 e.set_thread(pf_info.thread()->thread_id()); |
115 e.set_endtime(os::elapsed_counter()); | |
113 e.commit(); | 116 e.commit(); |
114 } | 117 } |
115 } | 118 } |
116 | 119 |
117 // Common to CMS and G1 | 120 // Common to CMS and G1 |
118 void OldGCTracer::send_concurrent_mode_failure_event() { | 121 void OldGCTracer::send_concurrent_mode_failure_event() { |
119 EventConcurrentModeFailure e; | 122 EventConcurrentModeFailure e(UNTIMED); |
120 if (e.should_commit()) { | 123 if (e.should_commit()) { |
121 e.set_gcId(_shared_gc_info.id()); | 124 e.set_gcId(_shared_gc_info.id()); |
125 e.set_endtime(os::elapsed_counter()); | |
122 e.commit(); | 126 e.commit(); |
123 } | 127 } |
124 } | 128 } |
125 | 129 |
126 #if INCLUDE_ALL_GCS | 130 #if INCLUDE_ALL_GCS |
134 e.commit(); | 138 e.commit(); |
135 } | 139 } |
136 } | 140 } |
137 | 141 |
138 void G1NewTracer::send_evacuation_info_event(EvacuationInfo* info) { | 142 void G1NewTracer::send_evacuation_info_event(EvacuationInfo* info) { |
139 EventEvacuationInfo e; | 143 EventEvacuationInfo e(UNTIMED); |
140 if (e.should_commit()) { | 144 if (e.should_commit()) { |
141 e.set_gcId(_shared_gc_info.id()); | 145 e.set_gcId(_shared_gc_info.id()); |
142 e.set_cSetRegions(info->collectionset_regions()); | 146 e.set_cSetRegions(info->collectionset_regions()); |
143 e.set_cSetUsedBefore(info->collectionset_used_before()); | 147 e.set_cSetUsedBefore(info->collectionset_used_before()); |
144 e.set_cSetUsedAfter(info->collectionset_used_after()); | 148 e.set_cSetUsedAfter(info->collectionset_used_after()); |
145 e.set_allocationRegions(info->allocation_regions()); | 149 e.set_allocationRegions(info->allocation_regions()); |
146 e.set_allocRegionsUsedBefore(info->alloc_regions_used_before()); | 150 e.set_allocRegionsUsedBefore(info->alloc_regions_used_before()); |
147 e.set_allocRegionsUsedAfter(info->alloc_regions_used_before() + info->bytes_copied()); | 151 e.set_allocRegionsUsedAfter(info->alloc_regions_used_before() + info->bytes_copied()); |
148 e.set_bytesCopied(info->bytes_copied()); | 152 e.set_bytesCopied(info->bytes_copied()); |
149 e.set_regionsFreed(info->regions_freed()); | 153 e.set_regionsFreed(info->regions_freed()); |
154 e.set_endtime(os::elapsed_counter()); | |
150 e.commit(); | 155 e.commit(); |
151 } | 156 } |
152 } | 157 } |
153 | 158 |
154 void G1NewTracer::send_evacuation_failed_event(const EvacuationFailedInfo& ef_info) const { | 159 void G1NewTracer::send_evacuation_failed_event(const EvacuationFailedInfo& ef_info) const { |
155 EventEvacuationFailed e; | 160 EventEvacuationFailed e(UNTIMED); |
156 if (e.should_commit()) { | 161 if (e.should_commit()) { |
157 e.set_gcId(_shared_gc_info.id()); | 162 e.set_gcId(_shared_gc_info.id()); |
158 e.set_data(to_trace_struct(ef_info)); | 163 e.set_data(to_trace_struct(ef_info)); |
164 e.set_endtime(os::elapsed_counter()); | |
159 e.commit(); | 165 e.commit(); |
160 } | 166 } |
161 } | 167 } |
162 #endif | 168 #endif |
163 | 169 |
187 GCHeapSummaryEventSender(GCId id, GCWhen::Type when) : _id(id), _when(when) {} | 193 GCHeapSummaryEventSender(GCId id, GCWhen::Type when) : _id(id), _when(when) {} |
188 | 194 |
189 void visit(const GCHeapSummary* heap_summary) const { | 195 void visit(const GCHeapSummary* heap_summary) const { |
190 const VirtualSpaceSummary& heap_space = heap_summary->heap(); | 196 const VirtualSpaceSummary& heap_space = heap_summary->heap(); |
191 | 197 |
192 EventGCHeapSummary e; | 198 EventGCHeapSummary e(UNTIMED); |
193 if (e.should_commit()) { | 199 if (e.should_commit()) { |
194 e.set_gcId(_id); | 200 e.set_gcId(_id); |
195 e.set_when((u1)_when); | 201 e.set_when((u1)_when); |
196 e.set_heapSpace(to_trace_struct(heap_space)); | 202 e.set_heapSpace(to_trace_struct(heap_space)); |
197 e.set_heapUsed(heap_summary->used()); | 203 e.set_heapUsed(heap_summary->used()); |
204 e.set_endtime(os::elapsed_counter()); | |
198 e.commit(); | 205 e.commit(); |
199 } | 206 } |
200 } | 207 } |
201 | 208 |
202 void visit(const PSHeapSummary* ps_heap_summary) const { | 209 void visit(const PSHeapSummary* ps_heap_summary) const { |
207 const VirtualSpaceSummary& young_summary = ps_heap_summary->young(); | 214 const VirtualSpaceSummary& young_summary = ps_heap_summary->young(); |
208 const SpaceSummary& eden_space = ps_heap_summary->eden(); | 215 const SpaceSummary& eden_space = ps_heap_summary->eden(); |
209 const SpaceSummary& from_space = ps_heap_summary->from(); | 216 const SpaceSummary& from_space = ps_heap_summary->from(); |
210 const SpaceSummary& to_space = ps_heap_summary->to(); | 217 const SpaceSummary& to_space = ps_heap_summary->to(); |
211 | 218 |
212 EventPSHeapSummary e; | 219 EventPSHeapSummary e(UNTIMED); |
213 if (e.should_commit()) { | 220 if (e.should_commit()) { |
214 e.set_gcId(_id); | 221 e.set_gcId(_id); |
215 e.set_when((u1)_when); | 222 e.set_when((u1)_when); |
216 | 223 |
217 e.set_oldSpace(to_trace_struct(ps_heap_summary->old())); | 224 e.set_oldSpace(to_trace_struct(ps_heap_summary->old())); |
218 e.set_oldObjectSpace(to_trace_struct(ps_heap_summary->old_space())); | 225 e.set_oldObjectSpace(to_trace_struct(ps_heap_summary->old_space())); |
219 e.set_youngSpace(to_trace_struct(ps_heap_summary->young())); | 226 e.set_youngSpace(to_trace_struct(ps_heap_summary->young())); |
220 e.set_edenSpace(to_trace_struct(ps_heap_summary->eden())); | 227 e.set_edenSpace(to_trace_struct(ps_heap_summary->eden())); |
221 e.set_fromSpace(to_trace_struct(ps_heap_summary->from())); | 228 e.set_fromSpace(to_trace_struct(ps_heap_summary->from())); |
222 e.set_toSpace(to_trace_struct(ps_heap_summary->to())); | 229 e.set_toSpace(to_trace_struct(ps_heap_summary->to())); |
230 e.set_endtime(os::elapsed_counter()); | |
223 e.commit(); | 231 e.commit(); |
224 } | 232 } |
225 } | 233 } |
226 }; | 234 }; |
227 | 235 |
239 | 247 |
240 return meta_sizes; | 248 return meta_sizes; |
241 } | 249 } |
242 | 250 |
243 void GCTracer::send_meta_space_summary_event(GCWhen::Type when, const MetaspaceSummary& meta_space_summary) const { | 251 void GCTracer::send_meta_space_summary_event(GCWhen::Type when, const MetaspaceSummary& meta_space_summary) const { |
244 EventMetaspaceSummary e; | 252 EventMetaspaceSummary e(UNTIMED); |
245 if (e.should_commit()) { | 253 if (e.should_commit()) { |
246 e.set_gcId(_shared_gc_info.id()); | 254 e.set_gcId(_shared_gc_info.id()); |
247 e.set_when((u1) when); | 255 e.set_when((u1) when); |
248 e.set_metaspace(to_trace_struct(meta_space_summary.meta_space())); | 256 e.set_metaspace(to_trace_struct(meta_space_summary.meta_space())); |
249 e.set_dataSpace(to_trace_struct(meta_space_summary.data_space())); | 257 e.set_dataSpace(to_trace_struct(meta_space_summary.data_space())); |
250 e.set_classSpace(to_trace_struct(meta_space_summary.class_space())); | 258 e.set_classSpace(to_trace_struct(meta_space_summary.class_space())); |
259 e.set_endtime(os::elapsed_counter()); | |
251 e.commit(); | 260 e.commit(); |
252 } | 261 } |
253 } | 262 } |
254 | 263 |
255 class PhaseSender : public PhaseVisitor { | 264 class PhaseSender : public PhaseVisitor { |
280 case 2: send_phase<EventGCPhasePauseLevel2>(pause); break; | 289 case 2: send_phase<EventGCPhasePauseLevel2>(pause); break; |
281 case 3: send_phase<EventGCPhasePauseLevel3>(pause); break; | 290 case 3: send_phase<EventGCPhasePauseLevel3>(pause); break; |
282 default: /* Ignore sending this phase */ break; | 291 default: /* Ignore sending this phase */ break; |
283 } | 292 } |
284 } | 293 } |
285 | |
286 #undef send_phase | |
287 }; | 294 }; |
288 | 295 |
289 void GCTracer::send_phase_events(TimePartitions* time_partitions) const { | 296 void GCTracer::send_phase_events(TimePartitions* time_partitions) const { |
290 PhaseSender phase_reporter(_shared_gc_info.id()); | 297 PhaseSender phase_reporter(_shared_gc_info.id()); |
291 | 298 |