src/share/classes/java/lang/invoke/MethodHandle.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/classes/java/lang/invoke/MethodHandle.java	Sat Mar 22 02:03:06 2014
--- new/src/share/classes/java/lang/invoke/MethodHandle.java	Sat Mar 22 02:03:06 2014

*** 25,38 **** --- 25,40 ---- package java.lang.invoke; import java.util.*; + import java.lang.invoke.LambdaForm.BasicType; import sun.invoke.util.*; import sun.misc.Unsafe; import static java.lang.invoke.MethodHandleStatics.*; + import static java.lang.invoke.LambdaForm.BasicType.*; /** * A method handle is a typed, directly executable reference to an underlying method, * constructor, field, or similar low-level operation, with optional * transformations of arguments or return values.
*** 1372,1401 **** --- 1374,1403 ---- // Override this if it can be improved. return MethodHandleImpl.makePairwiseConvert(this, newType, 1); } /*non-public*/ ! MethodHandle bindArgument(int pos, char basicType, Object value) { ! MethodHandle bindArgument(int pos, BasicType basicType, Object value) { // Override this if it can be improved. return rebind().bindArgument(pos, basicType, value); } /*non-public*/ MethodHandle bindReceiver(Object receiver) { // Override this if it can be improved. ! return bindArgument(0, 'L', receiver); ! return bindArgument(0, L_TYPE, receiver); } /*non-public*/ ! MethodHandle bindImmediate(int pos, char basicType, Object value) { ! MethodHandle bindImmediate(int pos, BasicType basicType, Object value) { // Bind an immediate value to a position in the arguments. // This means, elide the respective argument, // and replace all references to it in NamedFunction args with the specified value. // CURRENT RESTRICTIONS // * only for pos 0 and UNSAFE (position is adjusted in MHImpl to make API usable for others) ! assert pos == 0 && basicType == 'L' && value instanceof Unsafe; ! assert pos == 0 && basicType == L_TYPE && value instanceof Unsafe; MethodType type2 = type.dropParameterTypes(pos, pos + 1); // adjustment: ignore receiver! LambdaForm form2 = form.bindImmediate(pos + 1, basicType, value); // adjust pos to form-relative pos return copyWith(type2, form2); }

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