< prev index next >
src/hotspot/share/gc/g1/g1Trace.cpp
Print this page
rev 56145 : 8230431: Move G1 trace code from gcTrace* to G1 directory
Reviewed-by:
rev 56146 : 8209802: Garbage collectors should register JFR types themselves to avoid build errors.
@@ -22,14 +22,57 @@
*
*/
#include "precompiled.hpp"
#include "gc/g1/g1EvacuationInfo.hpp"
+#include "gc/g1/g1HeapRegionTraceType.hpp"
#include "gc/g1/g1Trace.hpp"
#include "gc/g1/g1YCTypes.hpp"
#include "gc/shared/gcHeapSummary.hpp"
#include "jfr/jfrEvents.hpp"
+#if INCLUDE_JFR
+#include "jfr/metadata/jfrSerializer.hpp"
+#endif
+
+#if INCLUDE_JFR
+class G1HeapRegionTypeConstant : public JfrSerializer {
+public:
+ void serialize(JfrCheckpointWriter& writer) {
+ static const u4 nof_entries = G1HeapRegionTraceType::G1HeapRegionTypeEndSentinel;
+ writer.write_count(nof_entries);
+ for (u4 i = 0; i < nof_entries; ++i) {
+ writer.write_key(i);
+ writer.write(G1HeapRegionTraceType::to_string((G1HeapRegionTraceType::Type)i));
+ }
+}
+};
+
+class G1YCTypeConstant : public JfrSerializer {
+public:
+ void serialize(JfrCheckpointWriter& writer) {
+ static const u4 nof_entries = G1YCTypeEndSentinel;
+ writer.write_count(nof_entries);
+ for (u4 i = 0; i < nof_entries; ++i) {
+ writer.write_key(i);
+ writer.write(G1YCTypeHelper::to_string((G1YCType)i));
+ }
+ }
+};
+
+static void register_jfr_type_constants() {
+ JfrSerializer::register_serializer(TYPE_G1HEAPREGIONTYPE, false, true,
+ new G1HeapRegionTypeConstant());
+
+ JfrSerializer::register_serializer(TYPE_G1YCTYPE, false, true,
+ new G1YCTypeConstant());
+}
+
+#endif
+
+void G1NewTracer::initialize() {
+ JFR_ONLY(register_jfr_type_constants());
+}
void G1NewTracer::report_yc_type(G1YCType type) {
_g1_young_gc_info.set_type(type);
}
< prev index next >