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