< 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 >