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