< prev index next >

make/src/classes/build/tools/jfr/GenerateJfrFiles.java

Print this page
rev 51898 : 8211239: Empty JFR events commit() signatures mismatch
Reviewed-by: XXX

@@ -475,10 +475,11 @@
             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 {}");

@@ -514,11 +515,11 @@
             out.write("");
         }
     }
 
     private static void printEmptyEvent(Printer out, EventElement event) {
-        out.write("class Event" + event.name + " : public JfrEvent");
+        out.write("class Event" + event.name + " : public JfrEvent<Event" + event.name + ">");
         out.write("{");
         out.write(" public:");
         out.write("  Event" + event.name + "(EventStartTime ignore=TIMED) {}");
         if (event.startTime) {
             StringJoiner sj = new StringJoiner(",\n    ");

@@ -529,10 +530,30 @@
             out.write("    " + sj.toString() + ") { }");
         }
         for (FieldElement f : event.fields) {
             out.write("  void set_" + f.name + "(" + f.getParameterType() + ") { }");
         }
+        out.write("");
+        out.write("  using JfrEvent<Event" + event.name + ">::commit; // else commit() is hidden by overloaded versions in this class");
+        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("");
+        StringJoiner sj = new StringJoiner(",\n                     ");
+        if (event.startTime) {
+            sj.add("const Ticks& startTicks");
+            sj.add("const Ticks& endTicks");
+        }
+        for (FieldElement f : event.fields) {
+            sj.add(f.getParameterType() + " " + f.name);
+        }
+        out.write("  static void commit(" + sj.toString() + ") { }");
         out.write("};");
     }
 
     private static void printEmptyType(Printer out, TypeElement t) {
         out.write("struct JfrStruct" + t.name);
< prev index next >