RFR (XS): 8027823: catchException combinator fails with 9 argument target

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Fri Nov 8 16:08:47 PST 2013


Thank you, John.

Since I'm not a Committer in JDK8, I need a sponsor to push this fix. 
Any volunteers? :-) Will provide the changeset at first demand.

Best regards,
Vladimir Ivanov

On 11/9/13 3:26 AM, John Rose wrote:
> Reviewed.  Thanks for the fix.  The test case will also be a useful quick test for unboxed catchEx paths.  — John
>
> On Nov 8, 2013, at 7:25 AM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
>
>> http://cr.openjdk.java.net/~vlivanov/8027823/webrev.00/
>>
>> MethodHandleImpl.makeGuardWithCatch has special invokers
>> (GuardWithCatch.invoke_L*) for methods with arity up to 8.
>> When method arity is larger, generic invoker (GuardWithCatch.invoke_V)
>> is used.
>>
>> Generic invoker expects GuardWithCatch.target & GuardWithCatch.catcher
>> method handles to have (Object... av)Object type, but they can reference
>> arbitrary methods, so type conversion is needed.
>>
>> makeSpreadArguments takes care of parameters' type conversion, but
>> return type is left as is. That's the reason why GuardWithCatch.invoke_V
>> fails to invoke both target or catcher.
>>
>> The fix is to add return type conversion on both paths.
>>
>> Testing: failing test, test/java/lang/invoke/
>>
>> Thanks!
>>
>> Best regards,
>> Vladimir Ivanov
>>
>> JBS: https://bugs.openjdk.java.net/browse/JDK-8027823
>> _______________________________________________
>> 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