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 }