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

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Aug 6 18:06:08 PDT 2013

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:
> 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. 
Are you always set background compilation to false? 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.


>> 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