Good news, bad news
Tom Rodriguez
tom.rodriguez at oracle.com
Mon May 23 14:41:49 PDT 2011
If there were to be a recursive inline in there, where would it occur? I can't tell from the names where in that inline tree where the recursive call occurs.
tom
On May 23, 2011, at 2:26 PM, Charles Oliver Nutter wrote:
> fib_ruby LogCompilation inlining graph, showing that fib_ruby is not
> inlined: https://gist.github.com/f2b665ad3c97ba622ebf
>
> Can anyone suggest other flags I can try to adjust to get things to
> inline better?
>
> FWIW, the handle chain in question that's not inlining is pretty simple:
>
> * DMH pointing back at fib_ruby
> * permute args
> * GWT
>
> - Charlie
>
> On Mon, May 23, 2011 at 4:19 PM, Charles Oliver Nutter
> <headius at headius.com> wrote:
>> I'm working up a set of files that show JRuby compilation output, but
>> I noticed a couple things that might be interesting right now.
>>
>> First off, fairly early in the assembly output for fib, I see this:
>>
>> 0x02876d1f: call 0x0282d0e0 ; OopMap{[96]=Oop [100]=Oop
>> [28]=Oop [40]=Oop [48]=Oop off=644}
>> ;*invokespecial invokeExact
>> ; -
>> java.lang.invoke.MethodHandle::invokeExact at 63
>> ; -
>> java.lang.invoke.MethodHandle::invokeExact at 23
>> ; -
>> bench.bench_fib_recursive::method__0$RUBY$fib_ruby at 51 (line 7)
>> ; {optimized virtual_call}
>>
>> For fib, the only invokedynamic is the recursive call to fib, so that
>> would indicate that fib_ruby is not inlining into itself at all here.
>> And I can't see it inlining into itself anywhere in the assembly
>> output.
>>
>> Later in the same output:
>>
>> 0x0287703f: call 0x0282dba0 ; OopMap{ebp=Oop off=1444}
>> ;*checkcast
>> ; -
>> java.lang.invoke.MethodHandle::invokeExact at 40
>> ; -
>> bench.bench_fib_recursive::method__0$RUBY$fib_ruby at 82 (line 7)
>> ; {runtime_call}
>> 0x02877044: call 0x0105a9d0 ;*checkcast
>> ; -
>> java.lang.invoke.MethodHandle::invokeExact at 40
>> ; -
>> bench.bench_fib_recursive::method__0$RUBY$fib_ruby at 82 (line 7)
>> ; {runtime_call}
>>
>> These appear repeatedly near the invokedynamic invocation above. If
>> I'm reading this right, neither the recursive call nor logic involved
>> in that particular handle is inlining. Am I right?
>>
>> Here's the complete assembly dump (i386) for the fib_ruby method:
>> https://gist.github.com/987640
>>
>> In other news, MaxInlineSize=150 with InlineSmallCode=3000 does not
>> appear to improve performance. I also tried bumping up
>> MaxRecursiveInlineLevel and MaxInlineLevel with no effect.
>>
>> - Charlie
>>
> _______________________________________________
> mlvm-dev mailing list
> mlvm-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
More information about the mlvm-dev
mailing list