Skip to content

Commit f7d0ece

Browse files
committed
8209802: Garbage collectors should register JFR types themselves to avoid build errors
Reviewed-by: kbarrett, tschatzl
1 parent bb63558 commit f7d0ece

File tree

8 files changed

+61
-51
lines changed

8 files changed

+61
-51
lines changed

src/hotspot/share/gc/g1/g1CollectedHeap.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1567,6 +1567,7 @@ G1CollectedHeap::G1CollectedHeap() :
15671567

15681568
// Initialize the G1EvacuationFailureALot counters and flags.
15691569
NOT_PRODUCT(reset_evacuation_should_fail();)
1570+
_gc_tracer_stw->initialize();
15701571

15711572
guarantee(_task_queues != NULL, "task_queues allocation failure.");
15721573
}

src/hotspot/share/gc/g1/g1HeapRegionEventSender.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include "gc/g1/heapRegion.hpp"
2828
#include "g1HeapRegionEventSender.hpp"
2929
#include "jfr/jfrEvents.hpp"
30+
#include "runtime/vmThread.hpp"
3031

3132
class DumpEventInfoClosure : public HeapRegionClosure {
3233
public:
@@ -41,9 +42,17 @@ class DumpEventInfoClosure : public HeapRegionClosure {
4142
}
4243
};
4344

45+
class VM_G1SendHeapRegionInfoEvents : public VM_Operation {
46+
virtual void doit() {
47+
DumpEventInfoClosure c;
48+
G1CollectedHeap::heap()->heap_region_iterate(&c);
49+
}
50+
virtual VMOp_Type type() const { return VMOp_HeapIterateOperation; }
51+
};
4452

4553
void G1HeapRegionEventSender::send_events() {
46-
DumpEventInfoClosure c;
47-
48-
G1CollectedHeap::heap()->heap_region_iterate(&c);
54+
if (UseG1GC) {
55+
VM_G1SendHeapRegionInfoEvents op;
56+
VMThread::execute(&op);
57+
}
4958
}

src/hotspot/share/gc/g1/g1Trace.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,53 @@
2424

2525
#include "precompiled.hpp"
2626
#include "gc/g1/g1EvacuationInfo.hpp"
27+
#include "gc/g1/g1HeapRegionTraceType.hpp"
2728
#include "gc/g1/g1Trace.hpp"
2829
#include "gc/g1/g1YCTypes.hpp"
2930
#include "gc/shared/gcHeapSummary.hpp"
3031
#include "jfr/jfrEvents.hpp"
32+
#if INCLUDE_JFR
33+
#include "jfr/metadata/jfrSerializer.hpp"
34+
#endif
35+
36+
#if INCLUDE_JFR
37+
class G1HeapRegionTypeConstant : public JfrSerializer {
38+
public:
39+
void serialize(JfrCheckpointWriter& writer) {
40+
static const u4 nof_entries = G1HeapRegionTraceType::G1HeapRegionTypeEndSentinel;
41+
writer.write_count(nof_entries);
42+
for (u4 i = 0; i < nof_entries; ++i) {
43+
writer.write_key(i);
44+
writer.write(G1HeapRegionTraceType::to_string((G1HeapRegionTraceType::Type)i));
45+
}
46+
}
47+
};
48+
49+
class G1YCTypeConstant : public JfrSerializer {
50+
public:
51+
void serialize(JfrCheckpointWriter& writer) {
52+
static const u4 nof_entries = G1YCTypeEndSentinel;
53+
writer.write_count(nof_entries);
54+
for (u4 i = 0; i < nof_entries; ++i) {
55+
writer.write_key(i);
56+
writer.write(G1YCTypeHelper::to_string((G1YCType)i));
57+
}
58+
}
59+
};
60+
61+
static void register_jfr_type_constants() {
62+
JfrSerializer::register_serializer(TYPE_G1HEAPREGIONTYPE, false, true,
63+
new G1HeapRegionTypeConstant());
64+
65+
JfrSerializer::register_serializer(TYPE_G1YCTYPE, false, true,
66+
new G1YCTypeConstant());
67+
}
68+
69+
#endif
70+
71+
void G1NewTracer::initialize() {
72+
JFR_ONLY(register_jfr_type_constants());
73+
}
3174

3275
void G1NewTracer::report_yc_type(G1YCType type) {
3376
_g1_young_gc_info.set_type(type);

src/hotspot/share/gc/g1/g1Trace.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class G1NewTracer : public YoungGCTracer {
4848
public:
4949
G1NewTracer() : YoungGCTracer(G1New) {}
5050

51+
void initialize();
5152
void report_yc_type(G1YCType type);
5253
void report_gc_end_impl(const Ticks& timestamp, TimePartitions* time_partitions);
5354
void report_evacuation_info(G1EvacuationInfo* info);

src/hotspot/share/jfr/periodic/jfrPeriodic.cpp

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
#include "classfile/systemDictionary.hpp"
3333
#include "code/codeCache.hpp"
3434
#include "compiler/compileBroker.hpp"
35-
#include "gc/g1/g1HeapRegionEventSender.hpp"
3635
#include "gc/shared/gcConfiguration.hpp"
3736
#include "gc/shared/gcTrace.hpp"
3837
#include "gc/shared/gcVMOperations.hpp"
@@ -65,6 +64,9 @@
6564
#include "services/threadService.hpp"
6665
#include "utilities/exceptions.hpp"
6766
#include "utilities/globalDefinitions.hpp"
67+
#if INCLUDE_G1GC
68+
#include "gc/g1/g1HeapRegionEventSender.hpp"
69+
#endif
6870
#if INCLUDE_SHENANDOAHGC
6971
#include "gc/shenandoah/shenandoahJfrSupport.hpp"
7072
#endif
@@ -323,18 +325,8 @@ TRACE_REQUEST_FUNC(ObjectCount) {
323325
VMThread::execute(&op);
324326
}
325327

326-
class VM_G1SendHeapRegionInfoEvents : public VM_Operation {
327-
virtual void doit() {
328-
G1HeapRegionEventSender::send_events();
329-
}
330-
virtual VMOp_Type type() const { return VMOp_HeapIterateOperation; }
331-
};
332-
333328
TRACE_REQUEST_FUNC(G1HeapRegionInformation) {
334-
if (UseG1GC) {
335-
VM_G1SendHeapRegionInfoEvents op;
336-
VMThread::execute(&op);
337-
}
329+
G1GC_ONLY(G1HeapRegionEventSender::send_events());
338330
}
339331

340332
// Java Mission Control (JMC) uses (Java) Long.MIN_VALUE to describe that a

src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.cpp

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,6 @@
5656
#include "opto/compile.hpp"
5757
#include "opto/node.hpp"
5858
#endif
59-
#if INCLUDE_G1GC
60-
#include "gc/g1/g1HeapRegionTraceType.hpp"
61-
#include "gc/g1/g1YCTypes.hpp"
62-
#endif
6359

6460
// Requires a ResourceMark for get_thread_name/as_utf8
6561
class JfrCheckpointThreadClosure : public ThreadClosure {
@@ -188,15 +184,6 @@ void GCWhenConstant::serialize(JfrCheckpointWriter& writer) {
188184
}
189185
}
190186

191-
void G1HeapRegionTypeConstant::serialize(JfrCheckpointWriter& writer) {
192-
static const u4 nof_entries = G1HeapRegionTraceType::G1HeapRegionTypeEndSentinel;
193-
writer.write_count(nof_entries);
194-
for (u4 i = 0; i < nof_entries; ++i) {
195-
writer.write_key(i);
196-
writer.write(G1HeapRegionTraceType::to_string((G1HeapRegionTraceType::Type)i));
197-
}
198-
}
199-
200187
void GCThresholdUpdaterConstant::serialize(JfrCheckpointWriter& writer) {
201188
static const u4 nof_entries = MetaspaceGCThresholdUpdater::Last;
202189
writer.write_count(nof_entries);
@@ -224,17 +211,6 @@ void MetaspaceObjectTypeConstant::serialize(JfrCheckpointWriter& writer) {
224211
}
225212
}
226213

227-
void G1YCTypeConstant::serialize(JfrCheckpointWriter& writer) {
228-
#if INCLUDE_G1GC
229-
static const u4 nof_entries = G1YCTypeEndSentinel;
230-
writer.write_count(nof_entries);
231-
for (u4 i = 0; i < nof_entries; ++i) {
232-
writer.write_key(i);
233-
writer.write(G1YCTypeHelper::to_string((G1YCType)i));
234-
}
235-
#endif
236-
}
237-
238214
static const char* reference_type_to_string(ReferenceType rt) {
239215
switch (rt) {
240216
case REF_NONE: return "None reference";

src/hotspot/share/jfr/recorder/checkpoint/types/jfrType.hpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,6 @@ class GCWhenConstant : public JfrSerializer {
6767
void serialize(JfrCheckpointWriter& writer);
6868
};
6969

70-
class G1HeapRegionTypeConstant : public JfrSerializer {
71-
public:
72-
void serialize(JfrCheckpointWriter& writer);
73-
};
74-
7570
class GCThresholdUpdaterConstant : public JfrSerializer {
7671
public:
7772
void serialize(JfrCheckpointWriter& writer);
@@ -87,11 +82,6 @@ class MetaspaceObjectTypeConstant : public JfrSerializer {
8782
void serialize(JfrCheckpointWriter& writer);
8883
};
8984

90-
class G1YCTypeConstant : public JfrSerializer {
91-
public:
92-
void serialize(JfrCheckpointWriter& writer);
93-
};
94-
9585
class ReferenceTypeConstant : public JfrSerializer {
9686
public:
9787
void serialize(JfrCheckpointWriter& writer);

src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeManager.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,9 @@ bool JfrTypeManager::initialize() {
226226
register_type(TYPE_GCCAUSE, false, true, new GCCauseConstant());
227227
register_type(TYPE_GCNAME, false, true, new GCNameConstant());
228228
register_type(TYPE_GCWHEN, false, true, new GCWhenConstant());
229-
register_type(TYPE_G1HEAPREGIONTYPE, false, true, new G1HeapRegionTypeConstant());
230229
register_type(TYPE_GCTHRESHOLDUPDATER, false, true, new GCThresholdUpdaterConstant());
231230
register_type(TYPE_METADATATYPE, false, true, new MetadataTypeConstant());
232231
register_type(TYPE_METASPACEOBJECTTYPE, false, true, new MetaspaceObjectTypeConstant());
233-
register_type(TYPE_G1YCTYPE, false, true, new G1YCTypeConstant());
234232
register_type(TYPE_REFERENCETYPE, false, true, new ReferenceTypeConstant());
235233
register_type(TYPE_NARROWOOPMODE, false, true, new NarrowOopModeConstant());
236234
register_type(TYPE_COMPILERPHASETYPE, false, true, new CompilerPhaseTypeConstant());

0 commit comments

Comments
 (0)