src/share/classes/com/sun/tools/javac/comp/Lower.java

changeset 1646
a4913ea9bb62
parent 1640
fa24eba012bd
child 1687
a4be2c2fe0a1
     1.1 --- a/src/share/classes/com/sun/tools/javac/comp/Lower.java	Mon Mar 18 18:33:13 2013 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Lower.java	Tue Mar 19 13:10:40 2013 -0700
     1.3 @@ -2604,11 +2604,6 @@
     1.4  
     1.5          enumDefs.appendList(otherDefs.toList());
     1.6          tree.defs = enumDefs.toList();
     1.7 -
     1.8 -        // Add the necessary members for the EnumCompatibleMode
     1.9 -        if (target.compilerBootstrap(tree.sym)) {
    1.10 -            addEnumCompatibleMembers(tree);
    1.11 -        }
    1.12      }
    1.13          // where
    1.14          private MethodSymbol systemArraycopyMethod;
    1.15 @@ -2657,30 +2652,6 @@
    1.16                  olderasure.getReturnType(),
    1.17                  olderasure.getThrownTypes(),
    1.18                  syms.methodClass);
    1.19 -
    1.20 -            if (target.compilerBootstrap(m.owner)) {
    1.21 -                // Initialize synthetic name field
    1.22 -                Symbol nameVarSym = lookupSynthetic(names.fromString("$name"),
    1.23 -                                                    tree.sym.owner.members());
    1.24 -                JCIdent nameIdent = make.Ident(nameParam.sym);
    1.25 -                JCIdent id1 = make.Ident(nameVarSym);
    1.26 -                JCAssign newAssign = make.Assign(id1, nameIdent);
    1.27 -                newAssign.type = id1.type;
    1.28 -                JCExpressionStatement nameAssign = make.Exec(newAssign);
    1.29 -                nameAssign.type = id1.type;
    1.30 -                tree.body.stats = tree.body.stats.prepend(nameAssign);
    1.31 -
    1.32 -                // Initialize synthetic ordinal field
    1.33 -                Symbol ordinalVarSym = lookupSynthetic(names.fromString("$ordinal"),
    1.34 -                                                       tree.sym.owner.members());
    1.35 -                JCIdent ordIdent = make.Ident(ordParam.sym);
    1.36 -                id1 = make.Ident(ordinalVarSym);
    1.37 -                newAssign = make.Assign(id1, ordIdent);
    1.38 -                newAssign.type = id1.type;
    1.39 -                JCExpressionStatement ordinalAssign = make.Exec(newAssign);
    1.40 -                ordinalAssign.type = id1.type;
    1.41 -                tree.body.stats = tree.body.stats.prepend(ordinalAssign);
    1.42 -            }
    1.43          }
    1.44  
    1.45          JCMethodDecl prevMethodDef = currentMethodDef;
    1.46 @@ -3888,168 +3859,4 @@
    1.47          }
    1.48          return translated.toList();
    1.49      }
    1.50 -
    1.51 -    //////////////////////////////////////////////////////////////
    1.52 -    // The following contributed by Borland for bootstrapping purposes
    1.53 -    //////////////////////////////////////////////////////////////
    1.54 -    private void addEnumCompatibleMembers(JCClassDecl cdef) {
    1.55 -        make_at(null);
    1.56 -
    1.57 -        // Add the special enum fields
    1.58 -        VarSymbol ordinalFieldSym = addEnumOrdinalField(cdef);
    1.59 -        VarSymbol nameFieldSym = addEnumNameField(cdef);
    1.60 -
    1.61 -        // Add the accessor methods for name and ordinal
    1.62 -        MethodSymbol ordinalMethodSym = addEnumFieldOrdinalMethod(cdef, ordinalFieldSym);
    1.63 -        MethodSymbol nameMethodSym = addEnumFieldNameMethod(cdef, nameFieldSym);
    1.64 -
    1.65 -        // Add the toString method
    1.66 -        addEnumToString(cdef, nameFieldSym);
    1.67 -
    1.68 -        // Add the compareTo method
    1.69 -        addEnumCompareTo(cdef, ordinalFieldSym);
    1.70 -    }
    1.71 -
    1.72 -    private VarSymbol addEnumOrdinalField(JCClassDecl cdef) {
    1.73 -        VarSymbol ordinal = new VarSymbol(PRIVATE|FINAL|SYNTHETIC,
    1.74 -                                          names.fromString("$ordinal"),
    1.75 -                                          syms.intType,
    1.76 -                                          cdef.sym);
    1.77 -        cdef.sym.members().enter(ordinal);
    1.78 -        cdef.defs = cdef.defs.prepend(make.VarDef(ordinal, null));
    1.79 -        return ordinal;
    1.80 -    }
    1.81 -
    1.82 -    private VarSymbol addEnumNameField(JCClassDecl cdef) {
    1.83 -        VarSymbol name = new VarSymbol(PRIVATE|FINAL|SYNTHETIC,
    1.84 -                                          names.fromString("$name"),
    1.85 -                                          syms.stringType,
    1.86 -                                          cdef.sym);
    1.87 -        cdef.sym.members().enter(name);
    1.88 -        cdef.defs = cdef.defs.prepend(make.VarDef(name, null));
    1.89 -        return name;
    1.90 -    }
    1.91 -
    1.92 -    private MethodSymbol addEnumFieldOrdinalMethod(JCClassDecl cdef, VarSymbol ordinalSymbol) {
    1.93 -        // Add the accessor methods for ordinal
    1.94 -        Symbol ordinalSym = lookupMethod(cdef.pos(),
    1.95 -                                         names.ordinal,
    1.96 -                                         cdef.type,
    1.97 -                                         List.<Type>nil());
    1.98 -
    1.99 -        Assert.check(ordinalSym instanceof MethodSymbol);
   1.100 -
   1.101 -        JCStatement ret = make.Return(make.Ident(ordinalSymbol));
   1.102 -        cdef.defs = cdef.defs.append(make.MethodDef((MethodSymbol)ordinalSym,
   1.103 -                                                    make.Block(0L, List.of(ret))));
   1.104 -
   1.105 -        return (MethodSymbol)ordinalSym;
   1.106 -    }
   1.107 -
   1.108 -    private MethodSymbol addEnumFieldNameMethod(JCClassDecl cdef, VarSymbol nameSymbol) {
   1.109 -        // Add the accessor methods for name
   1.110 -        Symbol nameSym = lookupMethod(cdef.pos(),
   1.111 -                                   names._name,
   1.112 -                                   cdef.type,
   1.113 -                                   List.<Type>nil());
   1.114 -
   1.115 -        Assert.check(nameSym instanceof MethodSymbol);
   1.116 -
   1.117 -        JCStatement ret = make.Return(make.Ident(nameSymbol));
   1.118 -
   1.119 -        cdef.defs = cdef.defs.append(make.MethodDef((MethodSymbol)nameSym,
   1.120 -                                                    make.Block(0L, List.of(ret))));
   1.121 -
   1.122 -        return (MethodSymbol)nameSym;
   1.123 -    }
   1.124 -
   1.125 -    private MethodSymbol addEnumToString(JCClassDecl cdef,
   1.126 -                                         VarSymbol nameSymbol) {
   1.127 -        Symbol toStringSym = lookupMethod(cdef.pos(),
   1.128 -                                          names.toString,
   1.129 -                                          cdef.type,
   1.130 -                                          List.<Type>nil());
   1.131 -
   1.132 -        JCTree toStringDecl = null;
   1.133 -        if (toStringSym != null)
   1.134 -            toStringDecl = TreeInfo.declarationFor(toStringSym, cdef);
   1.135 -
   1.136 -        if (toStringDecl != null)
   1.137 -            return (MethodSymbol)toStringSym;
   1.138 -
   1.139 -        JCStatement ret = make.Return(make.Ident(nameSymbol));
   1.140 -
   1.141 -        JCTree resTypeTree = make.Type(syms.stringType);
   1.142 -
   1.143 -        MethodType toStringType = new MethodType(List.<Type>nil(),
   1.144 -                                                 syms.stringType,
   1.145 -                                                 List.<Type>nil(),
   1.146 -                                                 cdef.sym);
   1.147 -        toStringSym = new MethodSymbol(PUBLIC,
   1.148 -                                       names.toString,
   1.149 -                                       toStringType,
   1.150 -                                       cdef.type.tsym);
   1.151 -        toStringDecl = make.MethodDef((MethodSymbol)toStringSym,
   1.152 -                                      make.Block(0L, List.of(ret)));
   1.153 -
   1.154 -        cdef.defs = cdef.defs.prepend(toStringDecl);
   1.155 -        cdef.sym.members().enter(toStringSym);
   1.156 -
   1.157 -        return (MethodSymbol)toStringSym;
   1.158 -    }
   1.159 -
   1.160 -    private MethodSymbol addEnumCompareTo(JCClassDecl cdef, VarSymbol ordinalSymbol) {
   1.161 -        Symbol compareToSym = lookupMethod(cdef.pos(),
   1.162 -                                   names.compareTo,
   1.163 -                                   cdef.type,
   1.164 -                                   List.of(cdef.sym.type));
   1.165 -
   1.166 -        Assert.check(compareToSym instanceof MethodSymbol);
   1.167 -
   1.168 -        JCMethodDecl compareToDecl = (JCMethodDecl) TreeInfo.declarationFor(compareToSym, cdef);
   1.169 -
   1.170 -        ListBuffer<JCStatement> blockStatements = new ListBuffer<JCStatement>();
   1.171 -
   1.172 -        JCModifiers mod1 = make.Modifiers(0L);
   1.173 -        Name oName = names.fromString("o");
   1.174 -        JCVariableDecl par1 = make.Param(oName, cdef.type, compareToSym);
   1.175 -
   1.176 -        JCIdent paramId1 = make.Ident(names.java_lang_Object);
   1.177 -        paramId1.type = cdef.type;
   1.178 -        paramId1.sym = par1.sym;
   1.179 -
   1.180 -        ((MethodSymbol)compareToSym).params = List.of(par1.sym);
   1.181 -
   1.182 -        JCIdent par1UsageId = make.Ident(par1.sym);
   1.183 -        JCIdent castTargetIdent = make.Ident(cdef.sym);
   1.184 -        JCTypeCast cast = make.TypeCast(castTargetIdent, par1UsageId);
   1.185 -        cast.setType(castTargetIdent.type);
   1.186 -
   1.187 -        Name otherName = names.fromString("other");
   1.188 -
   1.189 -        VarSymbol otherVarSym = new VarSymbol(mod1.flags,
   1.190 -                                              otherName,
   1.191 -                                              cdef.type,
   1.192 -                                              compareToSym);
   1.193 -        JCVariableDecl otherVar = make.VarDef(otherVarSym, cast);
   1.194 -        blockStatements.append(otherVar);
   1.195 -
   1.196 -        JCIdent id1 = make.Ident(ordinalSymbol);
   1.197 -
   1.198 -        JCIdent fLocUsageId = make.Ident(otherVarSym);
   1.199 -        JCExpression sel = make.Select(fLocUsageId, ordinalSymbol);
   1.200 -        JCBinary bin = makeBinary(MINUS, id1, sel);
   1.201 -        JCReturn ret = make.Return(bin);
   1.202 -        blockStatements.append(ret);
   1.203 -        JCMethodDecl compareToMethod = make.MethodDef((MethodSymbol)compareToSym,
   1.204 -                                                   make.Block(0L,
   1.205 -                                                              blockStatements.toList()));
   1.206 -        compareToMethod.params = List.of(par1);
   1.207 -        cdef.defs = cdef.defs.append(compareToMethod);
   1.208 -
   1.209 -        return (MethodSymbol)compareToSym;
   1.210 -    }
   1.211 -    //////////////////////////////////////////////////////////////
   1.212 -    // The above contributed by Borland for bootstrapping purposes
   1.213 -    //////////////////////////////////////////////////////////////
   1.214  }

mercurial