1.1 --- a/src/share/classes/com/sun/tools/javac/code/Types.java Tue Jun 11 09:59:34 2013 +0100 1.2 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java Fri Jun 14 16:25:09 2013 +0100 1.3 @@ -951,6 +951,22 @@ 1.4 } 1.5 1.6 /** 1.7 + * A polymorphic signature method (JLS SE 7, 8.4.1) is a method that 1.8 + * (i) is declared in the java.lang.invoke.MethodHandle class, (ii) takes 1.9 + * a single variable arity parameter (iii) whose declared type is Object[], 1.10 + * (iv) has a return type of Object and (v) is native. 1.11 + */ 1.12 + public boolean isSignaturePolymorphic(MethodSymbol msym) { 1.13 + List<Type> argtypes = msym.type.getParameterTypes(); 1.14 + return (msym.flags_field & NATIVE) != 0 && 1.15 + msym.owner == syms.methodHandleType.tsym && 1.16 + argtypes.tail.tail == null && 1.17 + argtypes.head.hasTag(TypeTag.ARRAY) && 1.18 + msym.type.getReturnType().tsym == syms.objectType.tsym && 1.19 + ((ArrayType)argtypes.head).elemtype.tsym == syms.objectType.tsym; 1.20 + } 1.21 + 1.22 + /** 1.23 * Is t the same type as s? 1.24 */ 1.25 public boolean isSameType(Type t, Type s) {