Graal inlining and AOT

Aleksandar Prokopec aleksandar.prokopec at oracle.com
Tue Apr 10 15:52:55 UTC 2018


Hi again,

These are the likely culprits:

https://github.com/oracle/graal/commit/b63f888b2b078b2117d58f238aae8b0bc1010c56#diff-065f0abcad38ed3f93120782c0f2cec0L70
https://github.com/oracle/graal/commit/b63f888b2b078b2117d58f238aae8b0bc1010c56#diff-065f0abcad38ed3f93120782c0f2cec0L109

I will submit a PR with a fix.

Thanks,
Alex

On 10.04.2018 17:50, Aleksandar Prokopec wrote:
> Hi Andrew,
>
> I guess that this behavior depends on the AOTInliningPolicy in the 
> basic Graal. If so, it might be that my recent refactorings there 
> changed something. I am going through the history now to figure it out.
>
> Thanks,
> Alex
>
> On 10.04.2018 17:46, Andrew Haley wrote:
>> With inlining that looks like this.  I'm pretty sure that it's 
>> nothing I've done.
>>
>> The net result is that it still works, it just compiles very, very 
>> slowly,
>> so the tests still run.
>>
>>    0x000003ff6d61f710: add    x16, xzr, x16, lsl #3  ; 
>> ImmutableOopMap{c_rarg4=Oop c_rarg7=Oop r12=Oop r16=Oop [112]=Oop 
>> [168]=Oop [272]=Oop [336]=Oop [360]=Oop [416]=Oop [440]=Oop [448]=Oop 
>> [472]=Oop [480]=Oop [504]=Oop [512]=Oop [536]=Oop [544]=Oop [576]=Oop 
>> [600]=Oop [624]=Oop [648]=Oop [672]=Oop [696]=Oop [712]=Oop [728]=Oop 
>> [744]=Oop [792]=Oop [808]=Oop [840]=Oop [864]=Oop [872]=Oop [896]=Oop 
>> [920]=Oop [928]=Oop }
>>                                                  ;*iload_0 
>> {reexecute=1 rethrow=0 return_oop=0}
>>                                                  ; - 
>> java.lang.StringUTF16::getChars at 22 (line 1212)
>>                                                  ; - 
>> java.lang.StringUTF16::getChars at 9 (line 1034)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 44 (line 753)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 215)
>>                                                  ; - 
>> java.util.Arrays::copyOfRange at 29 (line 4029)
>>                                                  ; - 
>> java.lang.StringLatin1::newString at 9 (line 549)
>>                                                  ; - 
>> java.lang.StringBuilder::toString at 16 (line 415)
>>                                                  ; - 
>> java.util.Arrays::copyOfRange at 32 (line 4029)
>>                                                  ; - 
>> java.lang.StringUTF16::newString at 42 (line 848)
>>                                                  ; - 
>> java.lang.StringBuilder::toString at 31 (line 416)
>>                                                  ; - 
>> java.lang.String::checkBoundsOffCount at 53 (line 3092)
>>                                                  ; - 
>> java.lang.StringUTF16::checkBoundsOffCount at 6 (line 1305)
>>                                                  ; - 
>> java.lang.StringUTF16::compress at 4 (line 192)
>>                                                  ; - 
>> java.lang.StringUTF16::compress at 9 (line 166)
>>                                                  ; - 
>> java.lang.StringUTF16::newString at 9 (line 842)
>>                                                  ; - 
>> java.lang.StringBuilder::toString at 31 (line 416)
>>                                                  ; - 
>> java.util.Arrays::copyOfRange at 32 (line 4029)
>>                                                  ; - 
>> java.lang.StringLatin1::newString at 9 (line 549)
>>                                                  ; - 
>> java.lang.StringBuilder::toString at 16 (line 415)
>>                                                  ; - 
>> java.util.Arrays::copyOfRange at 32 (line 4029)
>>                                                  ; - 
>> java.lang.StringLatin1::newString at 9 (line 549)
>>                                                  ; - 
>> java.lang.StringBuilder::toString at 16 (line 415)
>>                                                  ; - 
>> java.util.Arrays::copyOfRange at 32 (line 4029)
>>                                                  ; - 
>> java.lang.StringLatin1::newString at 9 (line 549)
>>                                                  ; - 
>> java.lang.StringBuilder::toString at 16 (line 415)
>>                                                  ; - 
>> java.lang.String::checkBoundsBeginEnd at 52 (line 3107)
>>                                                  ; - 
>> java.lang.StringUTF16::checkBoundsBeginEnd at 6 (line 1301)
>>                                                  ; - 
>> java.lang.StringUTF16::getChars at 3 (line 1033)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 44 (line 753)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 215)
>>                                                  ; - 
>> java.lang.String::checkBoundsBeginEnd at 31 (line 3107)
>>                                                  ; - 
>> java.lang.StringUTF16::checkBoundsBeginEnd at 6 (line 1301)
>>                                                  ; - 
>> java.lang.StringUTF16::getChars at 3 (line 1033)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 44 (line 753)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 215)
>>                                                  ; - 
>> java.lang.String::checkBoundsBeginEnd at 31 (line 3107)
>>                                                  ; - 
>> java.lang.StringUTF16::checkBoundsBeginEnd at 6 (line 1301)
>>                                                  ; - 
>> java.lang.StringUTF16::getChars at 3 (line 1033)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 44 (line 753)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 215)
>>                                                  ; - 
>> java.lang.String::checkBoundsBeginEnd at 31 (line 3107)
>>                                                  ; - 
>> java.lang.StringUTF16::checkBoundsBeginEnd at 6 (line 1301)
>>                                                  ; - 
>> java.lang.StringUTF16::getChars at 3 (line 1033)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 44 (line 753)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 215)
>>                                                  ; - 
>> java.lang.String::checkBoundsBeginEnd at 31 (line 3107)
>>                                                  ; - 
>> java.lang.StringUTF16::checkBoundsBeginEnd at 6 (line 1301)
>>                                                  ; - 
>> java.lang.StringUTF16::getChars at 3 (line 1033)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 44 (line 753)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 215)
>>                                                  ; - 
>> java.lang.StringUTF16::newBytesFor at 35 (line 46)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::inflate at 13 (line 202)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::putStringAt at 12 (line 1639)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 30 (line 513)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 141)
>>                                                  ; - 
>> java.lang.StringUTF16::newBytesFor at 31 (line 46)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::inflate at 13 (line 202)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::putStringAt at 12 (line 1639)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 30 (line 513)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 141)
>>                                                  ; - 
>> java.lang.StringUTF16::newBytesFor at 31 (line 46)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::inflate at 13 (line 202)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::putStringAt at 12 (line 1639)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 30 (line 513)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 141)
>>                                                  ; - 
>> java.lang.StringUTF16::newBytesFor at 31 (line 46)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::inflate at 13 (line 202)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::putStringAt at 12 (line 1639)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 30 (line 513)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 141)
>>                                                  ; - 
>> java.lang.StringUTF16::newBytesFor at 31 (line 46)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::inflate at 13 (line 202)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::putStringAt at 12 (line 1639)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 30 (line 513)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 141)
>>                                                  ; - 
>> java.lang.StringUTF16::newBytesFor at 31 (line 46)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::inflate at 13 (line 202)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::putStringAt at 12 (line 1639)
>>                                                  ; - 
>> java.lang.AbstractStringBuilder::append at 30 (line 513)
>>                                                  ; - 
>> java.lang.StringBuilder::append at 2 (line 141)
>>                                                  ; - 
>> java.lang.String::checkBoundsBeginEnd at 27 (line 3107)
>>                                                  ; - 
>> java.lang.String::getChars at 6 (line 853)
>>                                                  ; - 
>> java.io.BufferedWriter::write at 63 (line 229)
>>                                                  ; - 
>> java.io.Writer::write at 7 (line 162)
>>                                                  ; - 
>> java.io.PrintStream::write at 13 (line 604)
>>                                                  ; - 
>> java.io.PrintStream::print at 5 (line 745)
>>                                                  ; - 
>> java.io.PrintStream::println at 6 (line 882)
>>                                                  ; - Hello::main at 5 
>> (line 4)
>



More information about the graal-dev mailing list