C2 may fail to delay inlining of @ForceInline methods. In case call sequence is deep enough, C2 can crash due to stack overflow.
Test case:
http://cr.openjdk.java.net/~vlivanov/8012941/webrev.00/raw_files/new/test/compiler/jsr292/DeepInliningTest.java
Compilation output:
6451 98 b DeepInliningTest::f (10 bytes)
@ 3 java.lang.invoke.LambdaForm$MH/168423058::invokeExact_MT (13 bytes) inline (hot)
@ 2 java.lang.invoke.Invokers::checkExactType (30 bytes) inline (hot)
@ 11 java.lang.invoke.MethodHandle::type (5 bytes) accessor
@ 9 java.lang.invoke.LambdaForm$MH/1450495309::convert (21 bytes) inline (hot)
@ 5 java.lang.invoke.LambdaForm$MH/1670782018::convert (22 bytes) inline (hot)
@ 5 java.lang.invoke.LambdaForm$MH/1706377736::convert (21 bytes) inline (hot)
@ 5 java.lang.invoke.LambdaForm$MH/468121027::convert (22 bytes) inline (hot)
@ 5 java.lang.invoke.LambdaForm$MH/1804094807::convert (21 bytes) inline (hot)
@ 5 java.lang.invoke.LambdaForm$MH/951007336::convert (22 bytes) inline (hot)
@ 5 java.lang.invoke.LambdaForm$MH/2001049719::convert (21 bytes) inline (hot)
@ 5 java.lang.invoke.LambdaForm$MH/1528902577::convert (22 bytes) inline (hot)
...
P3 = HLM (ILW)
I = H: VM crash
L = L: very narrow corner case
W = M: increase maximum stack size for compiler threads