RFR: 8263718: unused-result warning happens at os_linux.cpp

Yasumasa Suenaga ysuenaga at openjdk.java.net
Thu Mar 18 14:42:38 UTC 2021


On Thu, 18 Mar 2021 12:27:04 GMT, Yasumasa Suenaga <ysuenaga at openjdk.org> wrote:

>> I agree with Magnus. BTW, we are sure that alloca() call is not simply optimized away, right? Otherwise I would assign the return value to some file static volatile holder.
>
> First, I think it is the best to remove `alloca()`. According to the comment, it seems to aim to reduce cache pollution. But I wonder why this `alloca()` call resolves it because stack memory will be allocated in each threads - they should be different physical memory. This code has existed since initial load, so I cannot find JBS ticket for this. So I'm not sure we can remove it yet. (comments are welcome!)
> 
> If we decide to remain this code, we need to avoid unused-result warning from GCC. I think we can use pragma because other pragmas (format-nonliteral, format-security, stringop-truncation") are used in HotSpot. In addition, this behavior does not seem to determine to be a bug in GCC (status is UNCONFIRMED). However I will agree to use `(void)!` if it is still preferred based on them.

> The alloca was added as a performance boost for hyperthreaded systems
> back in 2003 for JDK 5:
> 
> "A per-thread offset was added to each thread's stack to randomize the
> cachelines of hot stack frames (aka, stack coloring)."

IIUC it relates to share DTLB between two logical processors when Hyperthreading is enabled.

> I'm running some of our benchmarks to see if removing it makes a
> difference ... but chances are I'm not going to be running it on the
> kind of machines for which it was introduced.

Thanks!

> > If we decide to remain this code, we need to avoid unused-result warning from GCC. I think we can use pragma because other pragmas (format-nonliteral, format-security, stringop-truncation") are used in HotSpot. In addition, this behavior does not seem to determine to be a bug in GCC (status is UNCONFIRMED). However I will agree to use `(void)!` if it is still preferred based on them.
> 
> I'd reluctantly prefer to use the pragma as an official mechanism for
> avoiding the warning.

Ok, OpenJDK folks who discuss in this PR are not prefer to use pragma, so I will use `(void)!` if it is needed.
Let's see the result of benchmark and discuss what should we do.

-------------

PR: https://git.openjdk.java.net/jdk/pull/3042


More information about the hotspot-dev mailing list