private MethodType BindArgumentType(BoundMethodHandle mh, int pos, BasicType bt) { assert(mh.Form == LambdaForm); assert(mh.Form.Names[1 + pos].Type_Renamed == bt); assert(BasicType.basicType(mh.Type().ParameterType(pos)) == bt); return(mh.Type().DropParameterTypes(pos, pos + 1)); }
internal virtual BoundMethodHandle BindArgumentD(BoundMethodHandle mh, int pos, double value) { assert(mh.SpeciesData() == OldSpeciesData()); BasicType bt = D_TYPE; MethodType type2 = BindArgumentType(mh, pos, bt); LambdaForm form2 = BindArgumentForm(1 + pos); return(mh.CopyWithExtendD(type2, form2, value)); }
internal override BoundMethodHandle Rebind() { return(BoundMethodHandle.MakeReinvoker(this)); }
/// Editing methods for method handles. These need to have fast paths. private BoundMethodHandle.SpeciesData OldSpeciesData() { return(BoundMethodHandle.SpeciesData(LambdaForm)); }
internal override BoundMethodHandle CopyWithExtendL(MethodType mt, LambdaForm lf, Object narg) /*non-public*/ { return(BoundMethodHandle.BindSingle(mt, lf, narg)); // Use known fast path. }