RFR (XS): 8027823: catchException combinator fails with 9 argument target
John Rose
john.r.rose at oracle.com
Fri Nov 8 16:15:02 PST 2013
I'll push it for you. — John
On Nov 8, 2013, at 4:08 PM, Vladimir Ivanov <vladimir.x.ivanov at oracle.com> wrote:
> 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