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

src/share/classes/java/lang/invoke/MethodHandle.java

Print this page
rev 9490 : 8037210: Get rid of char-based descriptions 'J' of basic types
Reviewed-by: jrose, ?

*** 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 **** // Override this if it can be improved. return MethodHandleImpl.makePairwiseConvert(this, newType, 1); } /*non-public*/ ! MethodHandle bindArgument(int pos, char 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); } /*non-public*/ ! MethodHandle bindImmediate(int pos, char 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; 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); } --- 1374,1403 ---- // Override this if it can be improved. return MethodHandleImpl.makePairwiseConvert(this, newType, 1); } /*non-public*/ ! 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_TYPE, receiver); } /*non-public*/ ! 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_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