src/share/vm/gc_implementation/shared/gcTraceSend.cpp

Print this page

        

@@ -26,11 +26,15 @@
 #include "gc_implementation/shared/gcHeapSummary.hpp"
 #include "gc_implementation/shared/gcTimer.hpp"
 #include "gc_implementation/shared/gcTrace.hpp"
 #include "gc_implementation/shared/gcWhen.hpp"
 #include "gc_implementation/shared/promotionFailedInfo.hpp"
+#include "memory/heapInspection.hpp"
+#include "memory/iterator.hpp"
+#include "trace/traceBackend.hpp"
 #include "trace/tracing.hpp"
+#include "utilities/globalDefinitions.hpp"
 #ifndef SERIALGC
 #include "gc_implementation/g1/g1YCTypes.hpp"
 #endif
 
 // All GC dependencies against the trace framework is contained within this file.

@@ -103,10 +107,29 @@
     e.set_thread(pf_info.thread()->thread_id());
     e.commit();
   }
 }
 
+void GCTracer::send_object_count_after_gc_event(klassOop klass, jlong count, julong total_size) const {
+  EventObjectCountAfterGC e;
+  if (e.should_commit()) {
+    e.set_gcId(_shared_gc_info.id());
+    e.set_class(klass);
+    e.set_count(count);
+    e.set_totalSize(total_size);
+    e.commit();
+  }
+}
+
+bool GCTracer::should_send_object_count_after_gc_event() const {
+#if INCLUDE_TRACE
+  return Tracing::enabled(EventObjectCountAfterGC::eventId);
+#else
+  return false;
+#endif
+}
+
 #ifndef SERIALGC
 void G1NewTracer::send_g1_young_gc_event() {
   EventGCG1GarbageCollection e(UNTIMED);
   if (e.should_commit()) {
     e.set_gcId(_shared_gc_info.id());