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
> <head...@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@63
>>                                        ; -
>> java.lang.invoke.MethodHandle::invokeExact@23
>>                                        ; -
>> bench.bench_fib_recursive::method__0$RUBY$fib_ruby@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@40
>>                                        ; -
>> bench.bench_fib_recursive::method__0$RUBY$fib_ruby@82 (line 7)
>>                                        ;   {runtime_call}
>>  0x02877044: call      0x0105a9d0      ;*checkcast
>>                                        ; -
>> java.lang.invoke.MethodHandle::invokeExact@40
>>                                        ; -
>> bench.bench_fib_recursive::method__0$RUBY$fib_ruby@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@openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

_______________________________________________
mlvm-dev mailing list
mlvm-dev@openjdk.java.net
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Reply via email to