[9] RFR(S): 8042431: compiler/7200264/TestIntVect.java fails with: Test Failed: AddVI 0 < 4

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue May 6 18:07:59 UTC 2014


The default for C2 non-tiered should be 2, not 1.

We are mixing 2 things: minimum value and default value. The default is 
CI_COMPILER_COUNT.

Next statement is wrong for ZERO VM:
"A value of 2 works for any platform/configuration."

I don't think we should change globals.hpp, leave it as it is.

We only need to fix the minimum check. The bug is that we used default 
CI_COMPILER_COUNT as minimum value which is wrong.

The fix should be:

+   // Check the minimum number of compiler threads
+   status &=verify_min_value(CICompilerCount, 
get_min_number_of_compiler_threads(), "CICompilerCount");

Note, don't reset the default setting.

You can reduce size of new method more:

+ int Arguments::get_min_number_of_compiler_threads() {
+ #if !defined(COMPILER1) && !defined(COMPILER2) && !defined(SHARK)
+   return 0;   // case 1: no compilers (Zero VM)
+ #else
+   if (!TieredCompilation || (TieredStopAtLevel < 
CompLevel_full_optimization)) {
+     return 1; // case 2 or case 3
+   }
+   return 2;   // case 4 (tiered).
+ #endif
+ }

Thanks,
Vladimir

On 5/6/14 6:33 AM, Albert wrote:
> Hi Niclas,
>
> thanks for your suggestions. Your version is much nicer. Here is the
> updated webrev:
> http://cr.openjdk.java.net/~anoll/8042431/webrev.01/
>
> Thanks,
> Albert
>
> On 05/06/2014 03:25 PM, Niclas Adlertz wrote:
>> Hi, see my previous answer. If would suggest to change the nested
>> if-else cases to:
>>
>> // case 1
>> if (no_compiler) {
>>   return 0;
>> }
>>
>> // case 2 or 3
>> if (!TieredCompilation || TieredStopAtLevel <
>> CompLevel_full_optimization) {
>>   return 1;
>> }
>>
>> // case 4 (default case, works on all platforms)
>> return 2
>>
>> Kind Regards,
>> Niclas Adlertz
>>
>> On 05/06/2014 03:21 PM, Albert wrote:
>>> Hi Niclas,
>>>
>>> thanks for looking at this. Please see comment inline.
>>> On 05/06/2014 03:04 PM, Niclas Adlertz wrote:
>>>> Hi Albert,
>>>>
>>>> Inside src/share/vm/runtime/arguments.cpp:
>>>> +   // We should not come here. However, we also do not fail the VM,
>>>> since this is a not-critical error.
>>>> +   assert (false, "Missed configuration to set the minimum number of
>>>> compiler threads.");
>>>> +   // Return 2, since this works with all configurations on all
>>>> platforms.
>>>> +   return 2;
>>>>
>>>> That is dead code, and we can remove it.
>>>> If none of the cases 1, 2 or 3 are true, we will always enter case 4.
>>> That code is there to make sure (in case someone makes changes to that
>>> function)
>>> that the default return value is 2, since this works for all platforms.
>>>
>>> Do you think that leaving a comment is good enough (or not even that)?
>>>
>>>>
>>>> Kind Regards,
>>>> Niclas Adlertz
>>>>
>>>> On 05/06/2014 02:43 PM, Albert wrote:
>>>>> Hi all,
>>>>>
>>>>> could I get reviews for this patch?
>>>>>
>>>>> Bug:
>>>>> https://bugs.openjdk.java.net/browse/JDK-8042431
>>>>>
>>>>> Problem:
>>>>> The minimum number of compiler threads is set incorrectly.
>>>>>
>>>>> Solution:
>>>>> Define a new function 'get_min_number_of_compiler_threads()' that
>>>>> determines the minimum number of compiler threads  for a particular
>>>>> platform/configuration.
>>>>>
>>>>> Testing:
>>>>> Failing test case; zero; -XX:-TieredCompilation -XX:CICompilerCount=1
>>>>>
>>>>> Webrev:
>>>>> http://cr.openjdk.java.net/~anoll/8042431/webrev.00/
>>>>>
>>>>> Many thanks in advance,
>>>>> Albert
>>>>>
>>>>>
>>>
>


More information about the hotspot-compiler-dev mailing list