RFC 8175887: C1 value numbering handling of Unsafe.get*Volatile is incorrect?
Stuart Monteith
stuart.monteith at linaro.org
Mon Feb 27 15:21:37 UTC 2017
Actually, rerunning without any jvmargs (which reduced the coverage when
testing your patch), I get:
org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
[-client, -XX:-TieredCompilation]: Observed forbidden state: -1, 0
org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
[-server, -XX:+UnlockDiagnosticVMOptions, -XX:+StressLCM,
-XX:+StressGCM]: Observed forbidden state: -1, 0
org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
[-server, -XX:-TieredCompilation, -XX:+UnlockDiagnosticVMOptions,
-XX:+StressLCM, -XX:+StressGCM]: Observed forbidden state: -1, 0
org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
[-server]: Observed forbidden state: -1, 0
org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
[-server, -XX:-TieredCompilation]: Observed forbidden state: -1, 0
org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
[-client]: Observed forbidden state: -1, 0
So what I said before was wrong, I do get the failures.
Running with -XX:TieredStopAtLevel=1, I don't get failures.
Given that -server == -client, all of the failing tests are either
against C2 or tiered C1 & C2 compilation.
Running with the options passed explicity, "-m tough", the tests pass with:
-XX:TieredStopAtLevel=1 (Patched & unpatched)
Fails with:
-XX:-TieredCompilation "
No failures with:
-XX:-TieredComplation -Xcomp
My other two machines doen't exhibit the failure.
BR,
Stuart
On 27/02/17 14:39, Aleksey Shipilev wrote:
> On 02/27/2017 03:35 PM, Aleksey Shipilev wrote:
>> On 02/27/2017 03:32 PM, Stuart Monteith wrote:
>>> Will throw any pending exceptions at this point.
>>> Exception in thread "main" java.lang.AssertionError: TEST FAILURES:
>>>
>>> org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
>>> [-client, -XX:-TieredCompilation]: Observed forbidden state: -1, 0
>>>
>>> org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
>>> [-server, -XX:+UnlockDiagnosticVMOptions, -XX:+StressLCM,
>>> -XX:+StressGCM]: Observed forbidden state: -1, 0
>>>
>>> org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
>>> [-server]: Observed forbidden state: -1, 0
>>>
>>> org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
>>> [-server, -XX:-TieredCompilation]: Observed forbidden state: -1, 0
>>>
>>> org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
>>> [-client]: Observed forbidden state: -1, 0
>>>
>>> org.openjdk.jcstress.tests.coherence.varHandles.fields.opaque.ShortTest
>>> [-server, -XX:-TieredCompilation, -XX:+UnlockDiagnosticVMOptions,
>>> -XX:+StressLCM, -XX:+StressGCM]: Observed forbidden state: -1, 0
>>>
>>> Applying your patch and rerunning this test on the aarch64 machine
>>> causes these tests to pass. Now doing a full run. It should be finished
>>> by Tuesday.
>>
>> So Opaque failures on your machines *are* related to this. Good to know, thanks!
>
> It does not sound right though: with -TieredCompilation only C2 should have been
> working, not C1. Must be something else.
>
> -Aleksey
>
More information about the hotspot-compiler-dev
mailing list