RFR(S) : 8019915 : whitebox testClearMethodStateTest fails with tiered on sparc

Vladimir Kozlov vladimir.kozlov at oracle.com
Wed Aug 7 16:58:57 PDT 2013


Looks good.

Thanks,
Vladimir

On 8/7/13 4:49 PM, Igor Ignatyev wrote:
> Vladimir,
> According to result of our yesterday's investigation, I added
> 'compileonly' directive into each tests to prevent other compilations.
>
> webrev: http://cr.openjdk.java.net/~iignatyev/8019915/webrev.01/
>
> Best regards,
> Igor Ignatyev
>
> On 08/07/2013 05:32 AM, Igor Ignatyev wrote:
>>
>>
>> On 08/07/2013 05:06 AM, Vladimir Kozlov wrote:
>>> On 8/6/13 5:50 PM, Igor Ignatyev wrote:
>>>> Vladimir,
>>>>
>>>> Answers inline.
>>>> On 08/06/2013 11:24 PM, Vladimir Kozlov wrote:
>>>>> Igor,
>>>>>
>>>>> Two things.
>>>>> First, could you explain what do you mean under "queue overloaded"?
>>>> I mean very very big count of methods in compiler queue, that affect
>>>> compiler threshold in tiered compilation. For example, excerpt from
>>>> .jtr
>>>> file:
>>>> TEST CASE:CONSTRUCTOR_TEST
>>>> at test's start:
>>>>
>>>> private TestCase$Helper(int):
>>>>          compilable:     true
>>>>          compiled:       false
>>>>          comp_level:     0
>>>>          in_queue:       false
>>>> compile_queues_size:    47
>>>>
>>>> As we can see queue contains 47 methods, so threshold many more than
>>>> 100.
>>>>> Could you fix all white box test to not print by default
>>>>> System.out.println("method was invoked " + count + " times");?
>>>>>
>>>>> The same for these chagnes:
>>>>> System.out.printf("Compiler queue size is %d, waiting...%n", size);
>>>>>
>>>>> Can you put this under debugging flag (-Dverbose) so when we do normal
>>>>> jtreg runs they will not print it? They really pollute jtreg output,
>>>>> see
>>>>> the output file IsMethodCompilableTest.jtr from the bug report.
>>>> sure, I will do this.
>>>>
>>>>> I think you can partially avoid the problem if you use
>>>>> CICompilerCount=1.
>>>>>
>>>>> Is it possible that a method is compiled before your (401) count
>>>>> because
>>>>> of Tiered compilation? C1 in Tiered has threshold = 100.
>>>> Sorry, but it looks like you're mistaken look at output of
>>>> IsMethodCompilableTest, but the bug is about ClearMethodStateTest
>>>> and it
>>>> also affect only MakeMethodNotCompilableTest. IsMethodCompilableTest
>>>> fails due to JDK-8007270 'C1: compilation after reaching of
>>>> recompilation's limit'
>>>
>>> Okay, my bad. But looking on ClearMethodStateTest log, the queue size is
>>> only 2 at the end. For MakeMethodNotCompilableTest is is also 2.
>>> What I am trying to say is that waiting empty queue could be not enough.
>> Maybe you're right, but it definitely will help.
>>> Are you always set background compilation to false?
>> No, I don't.
>>> Since your method very small the intepreter thread can execute a lot
>>> of iterations before
>>> compiler thread finish compilation (especially C2). It depends how OS
>>> schedules threads and other things.
>> Yes, it's true, but method 'checkCompiled()' won't throw exception if
>> method is in queue. In that case, it will just print warning message
>> (see CompilerWhiteBoxTest:187-191). So to pass check method should be
>> compiled or just be in queue.
>>>
>>> Vladimir
>>>
>>>>
>>>>> thanks,
>>>>> Vladimir
>>>>>
>>>>> On 8/6/13 12:57 AM, Igor Ignatyev wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> Please review patch.
>>>>>>
>>>>>> Problem:
>>>>>> 'compiler/whitebox' tests fail with exception "<method_name> must be
>>>>>> compiled". The problem with these tests is as follows: tests don't
>>>>>> assume that compiler's queue can be overloaded at the moment of
>>>>>> 'compile(I)' invocation.
>>>>>>
>>>>>> Fix:
>>>>>> Waiting for empty compiler queue was added into start of
>>>>>> 'compile(I)'.
>>>>>>
>>>>>>
>>>>>> webrev: http://cr.openjdk.java.net/~iignatyev/8019915/webrev.00/
>>>>>> jbs: https://jbs.oracle.com/bugs/browse/JDK-8019915
>>>>>> bug: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8019915
>>>>>> testing: compiler/whitebox


More information about the hotspot-compiler-dev mailing list