repeatedly deoptimization(InvalidateReprofile, UnreachedCode) @ AbstractQueuedSynchronizer.await*

Doug Simon doug.simon at oracle.com
Fri Oct 7 12:06:02 UTC 2016


Yudi,

Alternatively, can you please send me the IGV graph? You can serialize IGV graphs to a file either by exporting it to XML from within IGV or by using the -Dgraal.PrintIdealGraphFile=true option.

-Doug

> On 07 Oct 2016, at 13:49, Doug Simon <doug.simon at oracle.com> wrote:
> 
> Hi Yudi,
> 
> Thanks for the report. Is it possible to boil this behavior down to a small test program?
> 
> -Doug
> 
>> On 07 Oct 2016, at 12:20, Yudi Zheng <yudi.zheng at usi.ch> wrote:
>> 
>> Hi,
>> 
>> As titled, I observe in Dacapo tomcat, ScalaBench actor, and SPECjbb repeatedly (more than 50) deoptimization at
>> 
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2033)
>> java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2066)
>> 
>> Both cases are on the following condition:
>> 
>> if (Thread.interrupted())
>>   throw new InterruptedException();
>> 
>> where igv shows that the BytecodeParser generates a FixedGuard with action being InvalidateReprofile, reason being UnreachedCode.
>> The resulted DeoptimizeNode is associated with a FrameState pointing to the last bytecode of Thread.interrupted().
>> 
>> Any idea what went wrong?
>> 
>> I collected the number by inserting DynamicCounterNode preceding each DeoptimizeNode before emitting LIR.
>> The option OptDeoptimizationGrouping is turned off.
>> 
>> Thanks,
>> Yudi
> 



More information about the graal-dev mailing list