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

John Rose john.r.rose at oracle.com
Fri Nov 8 15:26:13 PST 2013


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