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	Tue Jul 15 17:49:29 2014
--- new/src/share/classes/java/lang/invoke/MethodHandleImpl.java	Tue Jul 15 17:49:29 2014

*** 432,462 **** --- 432,441 ---- /*non-public*/ @Override boolean isInvokeSpecial() { return asFixedArity().isInvokeSpecial(); } @Override MethodHandle bindArgument(int pos, BasicType basicType, Object value) { return asFixedArity().bindArgument(pos, basicType, value); } @Override MethodHandle bindReceiver(Object receiver) { return asFixedArity().bindReceiver(receiver); } @Override MethodHandle dropArguments(MethodType srcType, int pos, int drops) { return asFixedArity().dropArguments(srcType, pos, drops); } @Override MethodHandle permuteArguments(MethodType newType, int[] reorder) { return asFixedArity().permuteArguments(newType, reorder); } } /** Factory method: Spread selected argument. */ static MethodHandle makeSpreadArguments(MethodHandle target, Class<?> spreadArgType, int spreadArgPos, int spreadArgCount) {
*** 792,802 **** --- 771,783 ---- static MethodHandle throwException(MethodType type) { assert(Throwable.class.isAssignableFrom(type.parameterType(0))); int arity = type.parameterCount(); if (arity > 1) { ! return throwException(type.dropParameterTypes(1, arity)).dropArguments(type, 1, arity-1); ! MethodHandle mh = throwException(type.dropParameterTypes(1, arity)); + mh = MethodHandles.dropArguments(mh, 1, type.parameterList().subList(1, arity)); + return mh; } return makePairwiseConvert(Lazy.NF_throwException.resolvedHandle(), type, 2); } static <T extends Throwable> Empty throwException(T t) throws T { throw t; }

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