1.1 --- a/src/share/classes/com/sun/tools/javac/jvm/Gen.java Tue Sep 25 11:52:37 2012 +0100 1.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/Gen.java Tue Sep 25 11:53:18 2012 +0100 1.3 @@ -2103,6 +2103,8 @@ 1.4 result = res; 1.5 } else if (sym.kind == VAR && sym.owner.kind == MTH) { 1.6 result = items.makeLocalItem((VarSymbol)sym); 1.7 + } else if (isInvokeDynamic(sym)) { 1.8 + result = items.makeDynamicItem(sym); 1.9 } else if ((sym.flags() & STATIC) != 0) { 1.10 if (!isAccessSuper(env.enclMethod)) 1.11 sym = binaryQualifier(sym, env.enclClass.type); 1.12 @@ -2152,8 +2154,12 @@ 1.13 result = items. 1.14 makeImmediateItem(sym.type, ((VarSymbol) sym).getConstValue()); 1.15 } else { 1.16 - if (!accessSuper) 1.17 + if (isInvokeDynamic(sym)) { 1.18 + result = items.makeDynamicItem(sym); 1.19 + return; 1.20 + } else if (!accessSuper) { 1.21 sym = binaryQualifier(sym, tree.selected.type); 1.22 + } 1.23 if ((sym.flags() & STATIC) != 0) { 1.24 if (!selectSuper && (ssym == null || ssym.kind != TYP)) 1.25 base = base.load(); 1.26 @@ -2174,6 +2180,10 @@ 1.27 } 1.28 } 1.29 1.30 + public boolean isInvokeDynamic(Symbol sym) { 1.31 + return sym.kind == MTH && ((MethodSymbol)sym).isDynamic(); 1.32 + } 1.33 + 1.34 public void visitLiteral(JCLiteral tree) { 1.35 if (tree.type.tag == TypeTags.BOT) { 1.36 code.emitop0(aconst_null);