inconsistent inlining behavior with CompileOnly

Roland Westrelin rwestrel at redhat.com
Wed Jun 29 12:50:14 UTC 2016


Hi Tobias,

> the only issue with CompileOnly I'm aware of is:
> https://bugs.openjdk.java.net/browse/JDK-8071652
> 
> Maybe Nils knows more but he's currently on vacation.
> 
> Have you checked this with -XX:CompileCommand=compileonly ?

Same behavior with CompileCommand=compileonly
I suspect the problem is that if a compilation of the inlined method as
a root of the compilation is attempted before some method tries to
inline it, the method is marked as not compilable and then later on,
inlining fails.

Roland.

> 
> Best regards,
> Tobias
> 
> On 29.06.2016 14:19, Roland Westrelin wrote:
>>
>> 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