diff -r a466f00c5cd2 -r 2d5aff89aaa3 src/share/classes/com/sun/tools/javac/comp/Resolve.java --- a/src/share/classes/com/sun/tools/javac/comp/Resolve.java Thu Jan 13 21:28:38 2011 -0800 +++ b/src/share/classes/com/sun/tools/javac/comp/Resolve.java Fri Jan 14 09:45:04 2011 +0000 @@ -70,8 +70,6 @@ public final boolean boxingEnabled; // = source.allowBoxing(); public final boolean varargsEnabled; // = source.allowVarargs(); public final boolean allowMethodHandles; - public final boolean allowInvokeDynamic; - public final boolean allowTransitionalJSR292; private final boolean debugResolve; Scope polymorphicSignatureScope; @@ -111,13 +109,8 @@ varargsEnabled = source.allowVarargs(); Options options = Options.instance(context); debugResolve = options.isSet("debugresolve"); - allowTransitionalJSR292 = options.isSet("allowTransitionalJSR292"); Target target = Target.instance(context); - allowMethodHandles = allowTransitionalJSR292 || - target.hasMethodHandles(); - allowInvokeDynamic = (allowTransitionalJSR292 || - target.hasInvokedynamic()) && - options.isSet("invokedynamic"); + allowMethodHandles = target.hasMethodHandles(); polymorphicSignatureScope = new Scope(syms.noSymbol); inapplicableMethodException = new InapplicableMethodException(diags); @@ -336,8 +329,7 @@ boolean useVarargs, Warner warn) throws Infer.InferenceException { - boolean polymorphicSignature = (m.isPolymorphicSignatureGeneric() && allowMethodHandles) || - isTransitionalDynamicCallSite(site, m); + boolean polymorphicSignature = m.isPolymorphicSignatureGeneric() && allowMethodHandles; if (useVarargs && (m.flags() & VARARGS) == 0) throw inapplicableMethodException.setMessage(null); Type mt = types.memberType(site, m); @@ -346,10 +338,7 @@ // need to inferred. List tvars = env.info.tvars; if (typeargtypes == null) typeargtypes = List.nil(); - if (allowTransitionalJSR292 && polymorphicSignature && typeargtypes.nonEmpty()) { - //transitional 292 call sites might have wrong number of targs - } - else if (mt.tag != FORALL && typeargtypes.nonEmpty()) { + if (mt.tag != FORALL && typeargtypes.nonEmpty()) { // This is not a polymorphic method, but typeargs are supplied // which is fine, see JLS3 15.12.2.1 } else if (mt.tag == FORALL && typeargtypes.nonEmpty()) { @@ -387,7 +376,7 @@ if (instNeeded) return polymorphicSignature ? - infer.instantiatePolymorphicSignatureInstance(env, site, m.name, (MethodSymbol)m, argtypes, typeargtypes) : + infer.instantiatePolymorphicSignatureInstance(env, site, m.name, (MethodSymbol)m, argtypes) : infer.instantiateMethod(env, tvars, (MethodType)mt, @@ -402,14 +391,6 @@ return mt; } - boolean isTransitionalDynamicCallSite(Type site, Symbol sym) { - return allowTransitionalJSR292 && // old logic that doesn't use annotations - !sym.isPolymorphicSignatureInstance() && - ((allowMethodHandles && site == syms.methodHandleType && // invokeExact, invokeGeneric, invoke - (sym.name == names.invoke && sym.isPolymorphicSignatureGeneric())) || - (site == syms.invokeDynamicType && allowInvokeDynamic)); // InvokeDynamic.XYZ - } - /** Same but returns null instead throwing a NoInstanceException */ Type instantiate(Env env, @@ -1412,12 +1393,11 @@ steps = steps.tail; } if (sym.kind >= AMBIGUOUS) { - if (site.tsym.isPolymorphicSignatureGeneric() || - isTransitionalDynamicCallSite(site, sym)) { + if (site.tsym.isPolymorphicSignatureGeneric()) { //polymorphic receiver - synthesize new method symbol env.info.varArgs = false; sym = findPolymorphicSignatureInstance(env, - site, name, null, argtypes, typeargtypes); + site, name, null, argtypes); } else { //if nothing is found return the 'first' error @@ -1431,7 +1411,7 @@ //non-instantiated polymorphic signature - synthesize new method symbol env.info.varArgs = false; sym = findPolymorphicSignatureInstance(env, - site, name, (MethodSymbol)sym, argtypes, typeargtypes); + site, name, (MethodSymbol)sym, argtypes); } return sym; } @@ -1449,15 +1429,9 @@ Symbol findPolymorphicSignatureInstance(Env env, Type site, Name name, MethodSymbol spMethod, // sig. poly. method or null if none - List argtypes, - List typeargtypes) { - if (typeargtypes.nonEmpty() && (site.tsym.isPolymorphicSignatureGeneric() || - (spMethod != null && spMethod.isPolymorphicSignatureGeneric()))) { - log.warning(env.tree.pos(), "type.parameter.on.polymorphic.signature"); - } - + List argtypes) { Type mtype = infer.instantiatePolymorphicSignatureInstance(env, - site, name, spMethod, argtypes, typeargtypes); + site, name, spMethod, argtypes); long flags = ABSTRACT | HYPOTHETICAL | POLYMORPHIC_SIGNATURE | (spMethod != null ? spMethod.flags() & Flags.AccessFlags :