// $ java -Xbatch -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:CompileOnly=::test -XX:CompileOnly=::m \ // -XX:+PrintCompilation -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining DevirtIntfMethod public class DevirtIntfMethod { interface I1 { public int m(); // default void m1() {} // Uncomment to make inlining happen } static abstract class C1 implements I1 {} static class C2 extends C1 { public int m() { return 0; }} static int test(C1 obj) { return obj.m(); } public static void main(String[] args) throws Throwable { for (int i = 0; i<20000; i++) { test(new C2()); } } }