8179527: Ineffective use of volatile hurts performance of Charset.atBugLevel()

Langer, Christoph christoph.langer at sap.com
Wed Jun 28 08:47:41 UTC 2017

Hi Petar,

thanks for pointing out the need for the CSR, I thought so too.

I’ll run through the CSR process… It’ll probably be an interesting learning experience for me as well ☺

Best regards

From: Peter Levart [mailto:peter.levart at gmail.com]
Sent: Mittwoch, 28. Juni 2017 10:45
To: Kazunori Ogata <OGATAK at jp.ibm.com>; Langer, Christoph <christoph.langer at sap.com>
Cc: ppc-aix-port-dev at openjdk.java.net; core-libs-dev <core-libs-dev at openjdk.java.net>; nio-dev at openjdk.java.net
Subject: Re: 8179527: Ineffective use of volatile hurts performance of Charset.atBugLevel()

Hi Ogata,

The change looks good.

But I think this needs to go through CSR. The CSR FAQ page at:



Q: What sort of changes require CSR review?
A: Any change to a JDK interface meant to be used outside of the JDK itself requires CSR review. In this context "interface" isn't limited to the Java programing language definition of an interface, but encompasses the broader concept of a protocol between the JDK and users of the JDK. Examples of interfaces by this definition include:

    Changing or defining a new system or security property

The FAQ also writes:

Q: How do I create a CSR ?
A: Do not directly create a CSR from the Create Menu. JIRA will let you do this right up until the moment you try to save it and find your typing was in vain.
Instead you should go to the target bug, select "More", and from the drop down menu select "Create CSR". This is required to properly associate the CSR with the main bug, just as is done for backports.

Since Christoph has already volunteered to be your sponsor, you could ask him to file the CSR for you. Or I can volunteer to file it (and learn how this goes) if Christoph doesn't have the time. It's Christophs call...

Regards, Peter
On 06/28/2017 08:20 AM, Kazunori Ogata wrote:

Hi Christoph,

Thank you for your suggestions and offering to sponsor my changes.

Here is the updated webrev that removes the atBugLevel() definition in

Charset.java and its call sites in Charset.java and

Charset-X-Coder.java.template.  Please review this:




"Langer, Christoph" <christoph.langer at sap.com><mailto:christoph.langer at sap.com> wrote on 2017/06/28


From: "Langer, Christoph" <christoph.langer at sap.com><mailto:christoph.langer at sap.com>

To: Alan Bateman <Alan.Bateman at oracle.com><mailto:Alan.Bateman at oracle.com>, Kazunori Ogata

<OGATAK at jp.ibm.com><mailto:OGATAK at jp.ibm.com>

Cc: "ppc-aix-port-dev at openjdk.java.net"<mailto:ppc-aix-port-dev at openjdk.java.net> <ppc-aix-port-

dev at openjdk.java.net<mailto:dev at openjdk.java.net>>, Claes Redestad <claes.redestad at oracle.com><mailto:claes.redestad at oracle.com>, core-

libs-dev <core-libs-dev at openjdk.java.net><mailto:core-libs-dev at openjdk.java.net>, "nio-dev at openjdk.java.net"<mailto:nio-dev at openjdk.java.net>

<nio-dev at openjdk.java.net><mailto:nio-dev at openjdk.java.net>

Date: 2017/06/28 03:32

Subject: RE: 8179527: Ineffective use of volatile hurts performance of


Hi Ogata,

I think I agree with Alan that the Charset.atBugLevel() method can

completely be eliminated from java/nio/charset.

Ogata, would you respin your change to remove it and post it for review?


can then sponsor it for you.

@Alan: Do we need a CSR ("Compatibility & Specification Review") request

here since support for "sun.nio.cs.bugLevel" will be removed?

Best regards


-----Original Message-----

From: Alan Bateman [mailto:Alan.Bateman at oracle.com]

Sent: Dienstag, 27. Juni 2017 10:13

To: Claes Redestad <claes.redestad at oracle.com><mailto:claes.redestad at oracle.com>; Langer, Christoph

<christoph.langer at sap.com><mailto:christoph.langer at sap.com>; Kazunori Ogata <OGATAK at jp.ibm.com><mailto:OGATAK at jp.ibm.com>;

core-libs-dev <core-libs-dev at openjdk.java.net><mailto:core-libs-dev at openjdk.java.net>;

nio-dev at openjdk.java.net<mailto:nio-dev at openjdk.java.net>

Cc: ppc-aix-port-dev at openjdk.java.net<mailto:ppc-aix-port-dev at openjdk.java.net>

Subject: Re: 8179527: Ineffective use of volatile hurts performance of


On 27/06/2017 08:36, Claes Redestad wrote:

The check of Charset.atBugLevel in checkName should no longer happen

for the majority of situations, as that test is now only done if the

charset name is "" (see


Kazunori's mail didn't mention the JDK build he is using, it may have

been JDK 8 rather than JDK 9.

since what differs between 1.4 and 1.5 was apparently whether or not

the empty string was to be accepted as a valid Charset...

So yes, if we can get rid of the test altogether, we'll be even



JDK-4786884 is the original issue. If there was any code dependent on

the broken behavior in 1.4 then I would expect it should have been


by now. So I think it can be removed.


More information about the core-libs-dev mailing list