RFR (L): 8208671: Runtime, JFR, Serviceability changes to allow enabling -Wreorder

Thomas Schatzl thomas.schatzl at oracle.com
Thu Aug 2 12:51:44 UTC 2018


Hi,

On Thu, 2018-08-02 at 22:34 +1000, David Holmes wrote:
> Hi Thomas,
> 
> On 2/08/2018 7:09 PM, Thomas Schatzl wrote:
> > Hi all,
> > 
> >    there have been several suggestions to try to fix the Hotspot
> > code to
> > allow us to enable -Wreorder in the Hotspot sources.
> 
> Can you enlighten us on what -Wreorder is/does and so what changes
> you are making please.

  oh, sorry, my fault. -Wreorder is a compiler switch that checks that
the order of declaration of members in the initializer lists of
constructors match the order of declaration in the class.

C++ always initializes members in the initializer list in the order of
the declaration in the class, it does not matter whether you specify it
differently in the initializer list or not.

An often overseen error is that you accidentally use other members in
the initializer list that actually have not been initialized yet,
although you did the right ordering in the initializer list.


E.g.

class X {
  int b;
  int a;

  X() : a(5), b(a) {
    // actually the content of b is undefined here. As per standard
    // your program will always initialize b before a.
  }
}

These are somewhat hard to detect errors that might go unnoticed for a
while otherwise.

-Wreorder forces you to have b before a in above example in your
initializer list by giving a warning otherwise, which causes
compilation failure.

Thanks,
  Thomas

> 
> Thanks,
> David
> 
> > This should make problems due to use-before-initialization much
> > more
> > obvious.
> > 
> > This change fixes initializer lists for the runtime, jfr and
> > serviceability directories.
> > 
> > There should be no change in code behavior.
> > 
> > A later follow-up will enable -Wreorder in the makefiles.
> > 
> > CR:
> > https://bugs.openjdk.java.net/browse/JDK-8208671
> > Webrev:
> > http://cr.openjdk.java.net/~tschatzl/8208671/webrev/
> > Testing:
> > hs-tier1-4,jdk-tier1-3
> > 
> > Thanks,
> >    Thomas
> > 



More information about the hotspot-dev mailing list