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

Yudi Zheng yudi.zheng at usi.ch
Fri Oct 7 10:20:46 UTC 2016


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