src/share/classes/com/sun/tools/javac/jvm/Gen.java

changeset 1336
26d93df3905a
parent 1326
30c36e23f154
child 1358
fc123bdeddb8
     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);

mercurial