src/share/classes/java/lang/invoke/MethodHandles.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/classes/java/lang/invoke/MethodHandles.java	Tue Apr  1 17:49:55 2014
--- new/src/share/classes/java/lang/invoke/MethodHandles.java	Tue Apr  1 17:49:55 2014

*** 35,48 **** --- 35,49 ---- import sun.invoke.util.Wrapper; import sun.reflect.CallerSensitive; import sun.reflect.Reflection; import sun.reflect.misc.ReflectUtil; import sun.security.util.SecurityConstants; + import java.lang.invoke.LambdaForm.BasicType; + import static java.lang.invoke.LambdaForm.BasicType.*; import static java.lang.invoke.MethodHandleStatics.*; import static java.lang.invoke.MethodHandleNatives.Constants.*; import java.util.concurrent.ConcurrentHashMap; import sun.security.util.SecurityConstants; /** * This class consists exclusively of static methods that operate on or return * method handles. They fall into several categories: * <ul>
*** 2186,2212 **** --- 2187,2213 ---- MethodHandle result = target; for (int i = 0; i < insCount; i++) { Object value = values[i]; Class<?> ptype = oldType.parameterType(pos+i); if (ptype.isPrimitive()) { ! char btype = 'I'; ! BasicType btype = I_TYPE; Wrapper w = Wrapper.forPrimitiveType(ptype); switch (w) { ! case LONG: btype = 'J'; break; ! case FLOAT: btype = 'F'; break; ! case DOUBLE: btype = 'D'; break; ! case LONG: btype = J_TYPE; break; ! case FLOAT: btype = F_TYPE; break; ! case DOUBLE: btype = D_TYPE; break; } // perform unboxing and/or primitive conversion value = w.convert(value, ptype); result = result.bindArgument(pos, btype, value); continue; } value = ptype.cast(value); // throw CCE if needed if (pos == 0) { result = result.bindReceiver(value); } else { ! result = result.bindArgument(pos, 'L', value); ! result = result.bindArgument(pos, L_TYPE, value); } } return result; }

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