inconsistent inlining behavior with CompileOnly

Roland Westrelin rwestrel at redhat.com
Wed Jun 29 12:19:07 UTC 2016


With the testcase below, executed with latest hs-comp with:

java -XX:CompileOnly=TestCompileCommand::m1 -XX:CompileOnly=TestCompileCommand::m2 -XX:CompileCommand=quiet -XX:-BackgroundCompilation -XX:+PrintCompilation -XX:+PrintInlining -XX:-TieredCompilation TestCompileCommand

I get the following output:

    170    1    b        TestCompileCommand::m1 (4 bytes)
                            @ 0   TestCompileCommand::m1_notinlined (1 bytes)   not compilable (disabled)
    170    2    b        TestCompileCommand::m2 (8 bytes)
                            @ 4   TestCompileCommand::m2_notinlined (1 bytes)   inline (hot)

Either both m1_notinlined & m2_notinlined should be inlined or neither
should be. Is this a known issue?

Roland.


public class TestCompileCommand {

    static void m1_notinlined() {
    }

    static void m1() {
        m1_notinlined();
    }

    static void m2_notinlined() {
    }

    static void m2(boolean flag) {
        if (flag) {
            m2_notinlined();
        }
    }

    static public void main(String[] args) {
        for (int i = 0; i < 20000; i++) {
            m1_notinlined();
            m1_notinlined();
            m1();
            m2((i%2) == 0);
        }
    }
}


More information about the hotspot-compiler-dev mailing list