Small update - while my change fixes the build issues on AIX (and maybe also the issues on zero) , My comment that the AIX compiler xlc12 is guilty was most likely wrong .
What happens, is that INCLUDE_JFR is not set on AIX (means : jfr is disabled on this platform). However , in the generated file jfrEventClasses.hpp , We have different classes for the cases INCLUDE_JFR and not INCLUDE_JFR . The not INCLUDE_JFR - versions of the classes only have the commit() method without params , and the set*-methods : See : jfrEventClasses.hpp #else // !INCLUDE_JFR class JfrEvent { public: JfrEvent() {} void set_starttime(const Ticks&) const {} void set_endtime(const Ticks&) const {} bool should_commit() const { return false; } static bool is_enabled() { return false; } void commit() {} }; and class EventGCPhaseParallel : public JfrEvent { public: EventGCPhaseParallel(EventStartTime ignore=TIMED) {} EventGCPhaseParallel( unsigned, unsigned, const char*) { } void set_gcId(unsigned) { } void set_gcWorkerId(unsigned) { } void set_name(const char*) { } }; Probably that’s why in the hs-code commit is used usually in the way of set*-calls + commit() , which works on both platforms with and without JFR . Questions : * Should the generator be changed to generate the missing methods in both cases ? * Or should in non-JFR case the complete event coding be removed/guarded by macros ? Best regards, Matthias From: Baesken, Matthias Sent: Donnerstag, 27. September 2018 14:13 To: 'hotspot-...@openjdk.java.net' <hotspot-...@openjdk.java.net>; 'build-dev@openjdk.java.net' <build-dev@openjdk.java.net> Cc: 'Leo Korinth' <leo.kori...@oracle.com> Subject: RFR : 8211213: fix aix build after 8196341: Add JFR events for parallel phases of G1 Hello , please review this small change that fixes our AIX build after “8196341: Add JFR events for parallel phases of G1” was pushed . After 8196341 , compile errors occurred, example : /openjdk/nb/rs6000_64/nightly/jdk/src/hotspot/share/gc/g1/g1CollectedHeap.cpp", line 3185.15: 1540-0215 (S) The wrong number of arguments has been specified for "JfrEvent::commit()" … This seems to be an xlc compiler bug to me. The overloaded commit function is not resolved correctly, The xlc-compiler seems to notice only the commit without arguments , which is brought into the EventGCPhaseParallel via “using” . The 3-parameter commit is not taken ☹ . The fix replaces the currently used commit-calls by set* + commit() . Seems it is done the same way at most (all?) places in hs code . Webrev/bug : http://cr.openjdk.java.net/~mbaesken/webrevs/8211213.0/ https://bugs.openjdk.java.net/browse/JDK-8211213 Thanks, Matthias