RFR: 8247524: Remove unnecessary volatile qualifiers from member functions
David Holmes
david.holmes at oracle.com
Mon Jun 15 06:59:19 UTC 2020
Hi Kim,
On 15/06/2020 9:15 am, Kim Barrett wrote:
> Please review this change to oopDesc and Metadata classes, removing
> unnecessary volatile qualifiers from some member functions.
>
> This change also makes virtual overrides of the relevant functions
> explicitly virtual.
>
> While there, removed unnecessary workaround in oopDesc::klass_or_null_acquire.
>
> After this change,
> egrep -r -H --exclude-dir=.hg "\)\s*(const |)\s*volatile" src/hotspot
> finds nothing; there seem to be no remaining volatile qualified methods.
I must admit I'm quite confused as to why anyone would ever have placed
a volatile modifier on a method that returns a constant true or false
??? What could it possibly mean?
On the other hand for a mutable field e.g.:
size_t size() const volatile { return _word_size; }
I can see an expectation that the volatile would force the compiler to
always reload _word_size, even if the field itself was not declared
volatile (which it isn't). Isn't this how we are now handling things via
Atomic::load - where the field is no longer flagged volatile but the
load is so that we still tell the compiler not to make assumptions about
potentially caching the field?
Thanks,
David
> CR:
> https://bugs.openjdk.java.net/browse/JDK-8247524
>
> Webrev:
> https://cr.openjdk.java.net/~kbarrett/8247524/open.00/
>
> Testing:
> mach5 tier1-3
>
More information about the hotspot-dev
mailing list