RFR: 8239423: [TESTBUG] jdk/jfr/jvm/TestJFRIntrinsic.java failed with -XX:-TieredCompilation
David Holmes
david.holmes at oracle.com
Wed Feb 19 07:40:12 UTC 2020
On 19/02/2020 5:26 pm, Ao Qi wrote:
> On Wed, Feb 19, 2020 at 3:01 PM David Holmes <david.holmes at oracle.com> wrote:
>>
>> Hi,
>>
>> On 19/02/2020 4:20 pm, Ao Qi wrote:
>>> Hi all,
>>>
>>> Could you please review this patch?
>>>
>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8239423
>>> webrev: http://cr.openjdk.java.net/~aoqi/8239423/webrev.00/ (22 lines
>>> changed: 19 ins; 0 del; 3 mod; 153 unchg)
>>
>> I'm not seeing the connection between the reported bug and the fix. It
>> seems to me that passing -XX:-TieredCompilation to a test that
>> explicitly sets -XX:TieredStopAtLevel=n is simply not something that can
>> work. In fact I'm surprised it doesn't trigger an error when validating
>> the command-line args.
>
> "-XX:-TieredCompilation" in the title is a way to trigger the bug, not
> the cause. Sorry for the confusion. The bug also can be triggered by
> the jdk configured with --with-jvm-features=-compiler1.
>
>>
>> You fix seems more related to whether C1 and/or C2 are available.
>
> Yes.
I've had a look at this and I'm seeing the problem but I don't yet think
this is the right fix. I see some general issues with the ability to use
the compiler flags in a way that may not make sense (to me anyway); then
I see an issue with the way the test determines the available levels.
Looking at the test it determines the available levels as follows:
- If tiered is enabled
- use TieredStopAtLevel=n to set the maximum level and thus the
available levels
- else if server
- only level is 4
- else // client, minimal, emulated client
- only level is 1
So with -TieredCompilation or a server only build the level is set to 4.
But the WhiteBox::compile_method rejects that as an invalid level for
the configuration.
I don't think the fix is to require C2, in fact I don't see how that
fixes the problem anyway if you have a C2 only build without tiered
because the test will still use level=4 which the WB rejects:
STDOUT:
WB error: invalid compilation level 4
The test in WB is:
if (comp_level > MIN2((CompLevel) TieredStopAtLevel,
CompLevel_highest_tier))
but I don't know how either of those values are set when (a) tiered is
disabled; or (b) you have a C1 or C2 only build (which should imply
tiered is disabled as well).
Cheers,
David
> Cheers,
> Ao Qi
>
>>
>> ??
>>
>> Cheers,
>> David
>>
>>> Thanks,
>>> Ao Qi
>>>
>
More information about the hotspot-dev
mailing list