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

Doug Simon doug.simon at oracle.com
Fri Oct 7 11:49:17 UTC 2016


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