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