src/share/classes/java/lang/invoke/MethodHandleImpl.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/classes/java/lang/invoke/MethodHandleImpl.java	Fri Nov  8 17:48:52 2013
--- new/src/share/classes/java/lang/invoke/MethodHandleImpl.java	Fri Nov  8 17:48:52 2013

*** 742,753 **** --- 742,756 ---- GuardWithCatch gguard = new GuardWithCatch(gtarget, exType, gcatcher); if (gtarget == null || gcatcher == null) throw new InternalError(); MethodHandle ginvoker = GuardWithCatch.INVOKES[nargs].bindReceiver(gguard); return makePairwiseConvert(ginvoker, type, 2); } else { + target = target.asType(type.changeReturnType(Object.class)); MethodHandle gtarget = makeSpreadArguments(target, Object[].class, 0, nargs); catcher = catcher.asType(ctype.changeParameterType(0, Throwable.class)); + MethodType catcherType = ctype.changeParameterType(0, Throwable.class) + .changeReturnType(Object.class); + catcher = catcher.asType(catcherType); MethodHandle gcatcher = makeSpreadArguments(catcher, Object[].class, 1, nargs); GuardWithCatch gguard = new GuardWithCatch(gtarget, exType, gcatcher); if (gtarget == null || gcatcher == null) throw new InternalError(); MethodHandle ginvoker = GuardWithCatch.VARARGS_INVOKE.bindReceiver(gguard); MethodHandle gcollect = makeCollectArguments(ginvoker, ValueConversions.varargsArray(nargs), 0, false);

src/share/classes/java/lang/invoke/MethodHandleImpl.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File