< prev index next >

src/java.base/share/classes/java/lang/invoke/BoundMethodHandle.java

Print this page




  97     /*non-public*/
  98     BoundMethodHandle bindArgumentL(int pos, Object value) {
  99         return editor().bindArgumentL(this, pos, value);
 100     }
 101     /*non-public*/
 102     BoundMethodHandle bindArgumentI(int pos, int value) {
 103         return editor().bindArgumentI(this, pos, value);
 104     }
 105     /*non-public*/
 106     BoundMethodHandle bindArgumentJ(int pos, long value) {
 107         return editor().bindArgumentJ(this, pos, value);
 108     }
 109     /*non-public*/
 110     BoundMethodHandle bindArgumentF(int pos, float value) {
 111         return editor().bindArgumentF(this, pos, value);
 112     }
 113     /*non-public*/
 114     BoundMethodHandle bindArgumentD(int pos, double value) {
 115         return editor().bindArgumentD(this, pos, value);
 116     }
 117 



 118     @Override
 119     BoundMethodHandle rebind() {
 120         if (!tooComplex()) {
 121             return this;
 122         }
 123         return makeReinvoker(this);
 124     }
 125 
 126     private boolean tooComplex() {
 127         return (fieldCount() > FIELD_COUNT_THRESHOLD ||
 128                 form.expressionCount() > FORM_EXPRESSION_THRESHOLD);
 129     }
 130     private static final int FIELD_COUNT_THRESHOLD = 12;      // largest convenient BMH field count
 131     private static final int FORM_EXPRESSION_THRESHOLD = 24;  // largest convenient BMH expression count
 132 
 133     /**
 134      * A reinvoker MH has this form:
 135      * {@code lambda (bmh, arg*) { thismh = bmh[0]; invokeBasic(thismh, arg*) }}
 136      */
 137     static BoundMethodHandle makeReinvoker(MethodHandle target) {




  97     /*non-public*/
  98     BoundMethodHandle bindArgumentL(int pos, Object value) {
  99         return editor().bindArgumentL(this, pos, value);
 100     }
 101     /*non-public*/
 102     BoundMethodHandle bindArgumentI(int pos, int value) {
 103         return editor().bindArgumentI(this, pos, value);
 104     }
 105     /*non-public*/
 106     BoundMethodHandle bindArgumentJ(int pos, long value) {
 107         return editor().bindArgumentJ(this, pos, value);
 108     }
 109     /*non-public*/
 110     BoundMethodHandle bindArgumentF(int pos, float value) {
 111         return editor().bindArgumentF(this, pos, value);
 112     }
 113     /*non-public*/
 114     BoundMethodHandle bindArgumentD(int pos, double value) {
 115         return editor().bindArgumentD(this, pos, value);
 116     }
 117     /*non-public*/
 118     BoundMethodHandle bindArgumentQ(int pos, Object value, MethodHandle unbox) {
 119         return editor().bindArgumentQ(this, pos, value, unbox);
 120     }
 121     @Override
 122     BoundMethodHandle rebind() {
 123         if (!tooComplex()) {
 124             return this;
 125         }
 126         return makeReinvoker(this);
 127     }
 128 
 129     private boolean tooComplex() {
 130         return (fieldCount() > FIELD_COUNT_THRESHOLD ||
 131                 form.expressionCount() > FORM_EXPRESSION_THRESHOLD);
 132     }
 133     private static final int FIELD_COUNT_THRESHOLD = 12;      // largest convenient BMH field count
 134     private static final int FORM_EXPRESSION_THRESHOLD = 24;  // largest convenient BMH expression count
 135 
 136     /**
 137      * A reinvoker MH has this form:
 138      * {@code lambda (bmh, arg*) { thismh = bmh[0]; invokeBasic(thismh, arg*) }}
 139      */
 140     static BoundMethodHandle makeReinvoker(MethodHandle target) {


< prev index next >