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, ?
rev 9491 : [mq]: meth-btype.1

*** 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,1409 **** // 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); ! } ! ! /*non-public*/ ! MethodHandle copyWith(MethodType mt, LambdaForm lf) { ! throw new InternalError("copyWith: " + this.getClass()); } /*non-public*/ MethodHandle dropArguments(MethodType srcType, int pos, int drops) { // Override this if it can be improved. --- 1374,1392 ---- // 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 dropArguments(MethodType srcType, int pos, int drops) { // Override this if it can be improved.
src/share/classes/java/lang/invoke/MethodHandle.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File