RFR : 8211213: fix aix build after 8196341: Add JFR events for parallel phases of G1
Baesken, Matthias
matthias.baesken at sap.com
Thu Sep 27 14:16:40 UTC 2018
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-dev at openjdk.java.net' <hotspot-dev at openjdk.java.net>; 'build-dev at openjdk.java.net' <build-dev at openjdk.java.net>
Cc: 'Leo Korinth' <leo.korinth at 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
More information about the build-dev
mailing list