Request for review (XS): 7108383: JSR 292: JRuby bench_define_method_methods.rb: assert(slow_jvms != NULL) failed: miss path must not
Christian Thalinger
christian.thalinger at oracle.com
Wed Nov 16 08:28:17 PST 2011
Thank you, Vladimir. -- Chris
On Nov 16, 2011, at 5:27 PM, Vladimir Kozlov wrote:
> Good.
>
> Vladimir
>
> On 11/16/11 5:45 AM, Christian Thalinger wrote:
>>
>> On Nov 10, 2011, at 6:00 PM, Vladimir Kozlov wrote:
>>
>>> You can check failing() and return NULL in that case (most cases)
>>
>> Done.
>>
>>> otherwise generate direct call if inlining failed for an other reason. I still do not get why hot path do not do it, it also can fail because of nodes threshold.
>>
>> The direct call is now generated by CallGenerator::for_method_handle_call. Before we were just returning NULL if the inlining failed.
>>
>> -- Chris
>>
>>>
>>> Vladimir
>>>
>>> On 11/10/11 3:28 AM, Christian Thalinger wrote:
>>>>
>>>> On Nov 9, 2011, at 4:15 PM, Vladimir Kozlov wrote:
>>>>
>>>>> Why not generate direct call as we do we for hot call?
>>>>
>>>> I had a small chat with John about that yesterday. Maybe moving the logic into its own function that returns a direct/dynamic call instead of null when the inlining fails is in general a good idea (especially for the selectAlternative idiom). I updated the webrev with that code.
>>>>
>>>> But in this particular case it doesn't help since we are so close (or already over) the threshold cliff that it fails anyway. Let me know what you think.
>>>>
>>>> -- Chris
>>>>
>>>>
>>>>>
>>>>> Vladimir
>>>>>
>>>>> Christian Thalinger wrote:
>>>>>> http://cr.openjdk.java.net/~twisti/7108383/
>>>>>> 7108383: JSR 292: JRuby bench_define_method_methods.rb: assert(slow_jvms != NULL) failed: miss path must not
>>>>>> Reviewed-by:
>>>>>> The problem is that the code in
>>>>>> PredictedDynamicCallGenerator::generate assumes that the generation of
>>>>>> the slow path always succeeds. This might not be the case when we hit
>>>>>> the node limit while generating the slow path.
>>>>>> The suggested fix is to remove the assert and return on failed slow
>>>>>> path generations.
>>>>>> I also applied the fix to PredictedCallGenerator::generate because I
>>>>>> think it can also happen there.
>>>>>> src/share/vm/opto/callGenerator.cpp
>>>>
>>
More information about the hotspot-compiler-dev
mailing list