Request for review (S): 7022998: JSR 292 recursive method handle calls inline themselves infinitely
Christian Thalinger
christian.thalinger at oracle.com
Thu Mar 17 10:35:42 PDT 2011
On Mar 17, 2011, at 6:31 PM, Tom Rodriguez wrote:
>
> On Mar 17, 2011, at 4:25 AM, Christian Thalinger wrote:
>
>> On Mar 15, 2011, at 7:41 PM, Vladimir Kozlov wrote:
>>> Christian Thalinger wrote:
>>>> On Mar 15, 2011, at 5:57 PM, Vladimir Kozlov wrote:
>>>>> Christian,
>>>>>
>>>>> Instead of duplicating code in several places could you factor it in one method?
>>>> Actually I wanted to do that but I didn't know where to put the code. sharedRuntime?
>>>
>>> May be a static method in CompileTask or AbstractCompiler since it is compilation information.
>>
>> CompileTask seems suitable. I put a couple of static methods in there and the code is much cleaner now. I updated the webrev.
>>
>>>
>>>>> sharedRuntime.cpp: you removed "---" which was indication of native method wrapper compilation.
>>>> Is there a difference between the "n" printed in nmethod::print_compilation and the "n" printed in AdapterHandlerLibrary::create_native_wrapper?
>>>
>>> I never saw nmethod::print_compilation using 'n' in output. But I assume it is the same.
>>
>> So I'd say we just drop the "---" and use "n" as the indicator for a native method wrapper.
>
> I'm not sure I understand this conversation. What --- are you dropping?
Vladimir means the "---" which (I think) were originally a placeholder for the compile id.
> n has always represented native wrappers.
True. I missed that.
-- Christian
>
> tom
>
>>
>> -- Christian
>>
>>>
>>> Vladimir
>>>
>>>>> Main fix is fine.
>>>> Okay.
>>>> -- Christian
>>>>> Thanks,
>>>>> Vladimir
>>>>>
>>>>> Christian Thalinger wrote:
>>>>>> http://cr.openjdk.java.net/~twisti/7022998/
>>>>>> 7022998: JSR 292 recursive method handle calls inline themselves infinitely
>>>>>> Reviewed-by:
>>>>>> Methods doing recursive method handle calls, like in JRuby's
>>>>>> bench_fib_resursive.rb or bench_tak.rb, inline themselves infinitely.
>>>>>> This results in a huge method which hits compile thresholds and aborts
>>>>>> inlining resulting in poor performance.
>>>>>> The inlining logic needs to know about method handle call sites and
>>>>>> search the call stack for recursive calls.
>>>>>> This change also cleans up the PrintCompilation, PrintInlining and
>>>>>> TraceTypeProfile output to be aligned since the tiered compilation
>>>>>> changes added some additional output.
>>>>>> src/share/vm/c1/c1_GraphBuilder.cpp
>>>>>> src/share/vm/opto/bytecodeInfo.cpp
>>>>>> src/share/vm/opto/doCall.cpp
>>>>>> src/share/vm/runtime/sharedRuntime.cpp
More information about the hotspot-compiler-dev
mailing list