< prev index next >
make/src/classes/build/tools/jfr/GenerateJfrFiles.java
Print this page
rev 51955 : 8211239: Build fails without JFR: empty JFR events signatures mismatch
Reviewed-by: XXX
*** 475,484 ****
--- 475,485 ----
printTypes(out, metadata, false);
out.write("");
out.write("");
out.write("#else // !INCLUDE_JFR");
out.write("");
+ out.write("template <typename T>");
out.write("class JfrEvent {");
out.write(" public:");
out.write(" JfrEvent() {}");
out.write(" void set_starttime(const Ticks&) const {}");
out.write(" void set_endtime(const Ticks&) const {}");
*** 495,601 ****
}
}
private static void printTypes(Printer out, Metadata metadata, boolean empty) {
for (TypeElement t : metadata.getStructs()) {
! if (empty) {
! out.write("");
! printEmptyType(out, t);
! } else {
! printType(out, t);
! }
out.write("");
}
for (EventElement e : metadata.getEvents()) {
! if (empty) {
! printEmptyEvent(out, e);
! } else {
! printEvent(out, e);
! }
out.write("");
}
}
- private static void printEmptyEvent(Printer out, EventElement event) {
- out.write("class Event" + event.name + " : public JfrEvent");
- out.write("{");
- out.write(" public:");
- out.write(" Event" + event.name + "(EventStartTime ignore=TIMED) {}");
- if (event.startTime) {
- StringJoiner sj = new StringJoiner(",\n ");
- for (FieldElement f : event.fields) {
- sj.add(f.getParameterType());
- }
- out.write(" Event" + event.name + "(");
- out.write(" " + sj.toString() + ") { }");
- }
- for (FieldElement f : event.fields) {
- out.write(" void set_" + f.name + "(" + f.getParameterType() + ") { }");
- }
- out.write("};");
- }
-
private static void printEmptyType(Printer out, TypeElement t) {
out.write("struct JfrStruct" + t.name);
out.write("{");
out.write(" public:");
for (FieldElement f : t.fields) {
out.write(" void set_" + f.name + "(" + f.getParameterType() + ") { }");
}
out.write("};");
}
! private static void printType(Printer out, TypeElement t) {
out.write("struct JfrStruct" + t.name);
out.write("{");
out.write(" private:");
for (FieldElement f : t.fields) {
printField(out, f);
}
out.write("");
out.write(" public:");
for (FieldElement f : t.fields) {
! printTypeSetter(out, f);
}
out.write("");
printWriteData(out, t.fields);
out.write("};");
out.write("");
}
! private static void printEvent(Printer out, EventElement event) {
out.write("class Event" + event.name + " : public JfrEvent<Event" + event.name + ">");
out.write("{");
out.write(" private:");
for (FieldElement f : event.fields) {
printField(out, f);
}
out.write("");
out.write(" public:");
out.write(" static const bool hasThread = " + event.thread + ";");
out.write(" static const bool hasStackTrace = " + event.stackTrace + ";");
out.write(" static const bool isInstant = " + !event.startTime + ";");
out.write(" static const bool hasCutoff = " + event.cutoff + ";");
out.write(" static const bool isRequestable = " + event.periodic + ";");
out.write(" static const JfrEventId eventId = Jfr" + event.name + "Event;");
out.write("");
out.write(" Event" + event.name + "(EventStartTime timing=TIMED) : JfrEvent<Event" + event.name + ">(timing) {}");
out.write("");
int index = 0;
for (FieldElement f : event.fields) {
out.write(" void set_" + f.name + "(" + f.getParameterType() + " " + f.getParameterName() + ") {");
out.write(" this->_" + f.name + " = " + f.getParameterName() + ";");
out.write(" DEBUG_ONLY(set_field_bit(" + index++ + "));");
out.write(" }");
}
out.write("");
printWriteData(out, event.fields);
out.write("");
out.write(" using JfrEvent<Event" + event.name + ">::commit; // else commit() is hidden by overloaded versions in this class");
! printConstructor2(out, event);
! printCommitMethod(out, event);
printVerify(out, event.fields);
out.write("};");
}
private static void printWriteData(Printer out, List<FieldElement> fields) {
out.write(" template <typename Writer>");
--- 496,592 ----
}
}
private static void printTypes(Printer out, Metadata metadata, boolean empty) {
for (TypeElement t : metadata.getStructs()) {
! printType(out, t, empty);
out.write("");
}
for (EventElement e : metadata.getEvents()) {
! printEvent(out, e, empty);
out.write("");
}
}
private static void printEmptyType(Printer out, TypeElement t) {
out.write("struct JfrStruct" + t.name);
out.write("{");
out.write(" public:");
for (FieldElement f : t.fields) {
out.write(" void set_" + f.name + "(" + f.getParameterType() + ") { }");
}
out.write("};");
}
! private static void printType(Printer out, TypeElement t, boolean empty) {
out.write("struct JfrStruct" + t.name);
out.write("{");
+ if (!empty) {
out.write(" private:");
for (FieldElement f : t.fields) {
printField(out, f);
}
out.write("");
+ }
out.write(" public:");
for (FieldElement f : t.fields) {
! printTypeSetter(out, f, empty);
}
out.write("");
+ if (!empty) {
printWriteData(out, t.fields);
+ }
out.write("};");
out.write("");
}
! private static void printEvent(Printer out, EventElement event, boolean empty) {
out.write("class Event" + event.name + " : public JfrEvent<Event" + event.name + ">");
out.write("{");
+ if (!empty) {
out.write(" private:");
for (FieldElement f : event.fields) {
printField(out, f);
}
out.write("");
+ }
out.write(" public:");
+ if (!empty) {
out.write(" static const bool hasThread = " + event.thread + ";");
out.write(" static const bool hasStackTrace = " + event.stackTrace + ";");
out.write(" static const bool isInstant = " + !event.startTime + ";");
out.write(" static const bool hasCutoff = " + event.cutoff + ";");
out.write(" static const bool isRequestable = " + event.periodic + ";");
out.write(" static const JfrEventId eventId = Jfr" + event.name + "Event;");
out.write("");
+ }
+ if (!empty) {
out.write(" Event" + event.name + "(EventStartTime timing=TIMED) : JfrEvent<Event" + event.name + ">(timing) {}");
+ } else {
+ out.write(" Event" + event.name + "(EventStartTime timing=TIMED) {}");
+ }
out.write("");
int index = 0;
for (FieldElement f : event.fields) {
out.write(" void set_" + f.name + "(" + f.getParameterType() + " " + f.getParameterName() + ") {");
+ if (!empty) {
out.write(" this->_" + f.name + " = " + f.getParameterName() + ";");
out.write(" DEBUG_ONLY(set_field_bit(" + index++ + "));");
+ }
out.write(" }");
}
out.write("");
+ if (!empty) {
printWriteData(out, event.fields);
out.write("");
+ }
out.write(" using JfrEvent<Event" + event.name + ">::commit; // else commit() is hidden by overloaded versions in this class");
! printConstructor2(out, event, empty);
! printCommitMethod(out, event, empty);
! if (!empty) {
printVerify(out, event.fields);
+ }
out.write("};");
}
private static void printWriteData(Printer out, List<FieldElement> fields) {
out.write(" template <typename Writer>");
*** 608,619 ****
}
}
out.write(" }");
}
! private static void printTypeSetter(Printer out, FieldElement field) {
out.write(" void set_" + field.name + "(" + field.getParameterType() + " new_value) { this->_" + field.name + " = new_value; }");
}
private static void printVerify(Printer out, List<FieldElement> fields) {
out.write("");
out.write("#ifdef ASSERT");
--- 599,614 ----
}
}
out.write(" }");
}
! private static void printTypeSetter(Printer out, FieldElement field, boolean empty) {
! if (!empty) {
out.write(" void set_" + field.name + "(" + field.getParameterType() + " new_value) { this->_" + field.name + " = new_value; }");
+ } else {
+ out.write(" void set_" + field.name + "(" + field.getParameterType() + " new_value) { }");
+ }
}
private static void printVerify(Printer out, List<FieldElement> fields) {
out.write("");
out.write("#ifdef ASSERT");
*** 624,647 ****
}
out.write(" }");
out.write("#endif");
}
! private static void printCommitMethod(Printer out, EventElement event) {
if (event.startTime) {
StringJoiner sj = new StringJoiner(",\n ");
for (FieldElement f : event.fields) {
sj.add(f.getParameterType() + " " + f.name);
}
out.write("");
out.write(" void commit(" + sj.toString() + ") {");
out.write(" if (should_commit()) {");
for (FieldElement f : event.fields) {
out.write(" set_" + f.name + "(" + f.name + ");");
}
out.write(" commit();");
out.write(" }");
out.write(" }");
}
out.write("");
StringJoiner sj = new StringJoiner(",\n ");
if (event.startTime) {
--- 619,644 ----
}
out.write(" }");
out.write("#endif");
}
! private static void printCommitMethod(Printer out, EventElement event, boolean empty) {
if (event.startTime) {
StringJoiner sj = new StringJoiner(",\n ");
for (FieldElement f : event.fields) {
sj.add(f.getParameterType() + " " + f.name);
}
out.write("");
out.write(" void commit(" + sj.toString() + ") {");
+ if (!empty) {
out.write(" if (should_commit()) {");
for (FieldElement f : event.fields) {
out.write(" set_" + f.name + "(" + f.name + ");");
}
out.write(" commit();");
out.write(" }");
+ }
out.write(" }");
}
out.write("");
StringJoiner sj = new StringJoiner(",\n ");
if (event.startTime) {
*** 650,659 ****
--- 647,657 ----
}
for (FieldElement f : event.fields) {
sj.add(f.getParameterType() + " " + f.name);
}
out.write(" static void commit(" + sj.toString() + ") {");
+ if (!empty) {
out.write(" Event" + event.name + " me(UNTIMED);");
out.write("");
out.write(" if (me.should_commit()) {");
if (event.startTime) {
out.write(" me.set_starttime(startTicks);");
*** 662,675 ****
for (FieldElement f : event.fields) {
out.write(" me.set_" + f.name + "(" + f.name + ");");
}
out.write(" me.commit();");
out.write(" }");
out.write(" }");
}
! private static void printConstructor2(Printer out, EventElement event) {
if (!event.startTime) {
out.write("");
out.write("");
}
if (event.startTime) {
--- 660,674 ----
for (FieldElement f : event.fields) {
out.write(" me.set_" + f.name + "(" + f.name + ");");
}
out.write(" me.commit();");
out.write(" }");
+ }
out.write(" }");
}
! private static void printConstructor2(Printer out, EventElement event, boolean empty) {
if (!event.startTime) {
out.write("");
out.write("");
}
if (event.startTime) {
*** 677,692 ****
--- 676,695 ----
out.write(" Event" + event.name + "(");
StringJoiner sj = new StringJoiner(",\n ");
for (FieldElement f : event.fields) {
sj.add(f.getParameterType() + " " + f.name);
}
+ if (!empty) {
out.write(" " + sj.toString() + ") : JfrEvent<Event" + event.name + ">(TIMED) {");
out.write(" if (should_commit()) {");
for (FieldElement f : event.fields) {
out.write(" set_" + f.name + "(" + f.name + ");");
}
out.write(" }");
+ } else {
+ out.write(" " + sj.toString() + ") {");
+ }
out.write(" }");
}
}
private static void printField(Printer out, FieldElement field) {
< prev index next >