RFR(S): 8252292: 8240795 may cause anti-dependence to be missed
Tobias Hartmann
tobias.hartmann at oracle.com
Tue Aug 25 13:49:43 UTC 2020
Hi Roland,
Good catch, the fix looks reasonable to me.
I think the test needs a @requires vm.gc == "Parallel" | vm.gc == "null" to not fail due to
conflicting GC options if another GC is set.
Best regards,
Tobias
On 25.08.20 10:23, Roland Westrelin wrote:
>
> https://bugs.openjdk.java.net/browse/JDK-8252292
> http://cr.openjdk.java.net/~roland/8252292/webrev.00/
>
> In 8240795, I modified alias analysis so non escaping allocations don't
> alias with bottom memory. While browsing that code last week, I noticed
> that that change didn't seem quite right and may cause some
> anti-dependences to be missed. I could indeed write a test case that
> fails with an incorrect execution.
>
> In the test case: the dst[9] load after the ArrayCopy is transformed
> into a src[9] load before the ArrayCopy. Anti dependence analysis find
> src[9] shares the memory of the ArrayCopy but because of the way I
> tweaked the code with 8240795, anti-dependence analysis finds the src[9]
> and ArrayCopy don't alias so src[9] can sink out of the loop which is
> wrong because of the src[9] store. Anti-dependence analysis in that case
> would need to look at the memory uses of ArrayCopy too.
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list