RFR (XS): 8019184: MethodHandles.catchException() fails when methods have 8 args + varargs

Christian Thalinger christian.thalinger at oracle.com
Tue Jul 2 13:33:29 PDT 2013


http://cr.openjdk.java.net/~twisti/8019184/webrev/

8019184: MethodHandles.catchException() fails when methods have 8 args + varargs
Reviewed-by:

The bug seems to be in MethodHandlesImpl.makeGuardWithCatch using ValueConversions.varargsArray:

  return makeCollectArguments(ginvoker, ValueConversions.varargsArray(nargs), 0, false);

ValueConversions.varargsArray returns a MethodHandle which's type is:

  MethodHandle(Object,Object,Object,Object,Object,Object,Object,Object,Object)Object[]

It doesn't preserve the trailing Object[].

The fix is to call makePairwiseConvert on the result of makeCollectArguments.

src/share/classes/java/lang/invoke/MethodHandleImpl.java
test/java/lang/invoke/TestCatchExceptionWithVarargs.java



More information about the hotspot-dev mailing list