1.1 --- a/src/share/classes/com/sun/tools/javac/jvm/Gen.java Sat Nov 05 00:02:33 2011 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/Gen.java Tue Nov 08 11:51:05 2011 -0800 1.3 @@ -47,6 +47,8 @@ 1.4 import static com.sun.tools.javac.jvm.ByteCodes.*; 1.5 import static com.sun.tools.javac.jvm.CRTFlags.*; 1.6 import static com.sun.tools.javac.main.OptionName.*; 1.7 +import static com.sun.tools.javac.tree.JCTree.Tag.*; 1.8 +import static com.sun.tools.javac.tree.JCTree.Tag.BLOCK; 1.9 1.10 /** This pass maps flat Java (i.e. without inner classes) to bytecodes. 1.11 * 1.12 @@ -433,7 +435,7 @@ 1.13 */ 1.14 boolean hasFinally(JCTree target, Env<GenContext> env) { 1.15 while (env.tree != target) { 1.16 - if (env.tree.getTag() == JCTree.TRY && env.info.finalize.hasFinalizer()) 1.17 + if (env.tree.hasTag(TRY) && env.info.finalize.hasFinalizer()) 1.18 return true; 1.19 env = env.next; 1.20 } 1.21 @@ -460,17 +462,17 @@ 1.22 for (List<JCTree> l = defs; l.nonEmpty(); l = l.tail) { 1.23 JCTree def = l.head; 1.24 switch (def.getTag()) { 1.25 - case JCTree.BLOCK: 1.26 + case BLOCK: 1.27 JCBlock block = (JCBlock)def; 1.28 if ((block.flags & STATIC) != 0) 1.29 clinitCode.append(block); 1.30 else 1.31 initCode.append(block); 1.32 break; 1.33 - case JCTree.METHODDEF: 1.34 + case METHODDEF: 1.35 methodDefs.append(def); 1.36 break; 1.37 - case JCTree.VARDEF: 1.38 + case VARDEF: 1.39 JCVariableDecl vdef = (JCVariableDecl) def; 1.40 VarSymbol sym = vdef.sym; 1.41 checkDimension(vdef.pos(), sym.type); 1.42 @@ -707,7 +709,7 @@ 1.43 } 1.44 int startpc = code.curPc(); 1.45 genStat(tree, env); 1.46 - if (tree.getTag() == JCTree.BLOCK) crtFlags |= CRT_BLOCK; 1.47 + if (tree.hasTag(BLOCK)) crtFlags |= CRT_BLOCK; 1.48 code.crt.put(tree, crtFlags, startpc, code.curPc()); 1.49 } 1.50 1.51 @@ -717,7 +719,7 @@ 1.52 if (code.isAlive()) { 1.53 code.statBegin(tree.pos); 1.54 genDef(tree, env); 1.55 - } else if (env.info.isSwitch && tree.getTag() == JCTree.VARDEF) { 1.56 + } else if (env.info.isSwitch && tree.hasTag(VARDEF)) { 1.57 // variables whose declarations are in a switch 1.58 // can be used even if the decl is unreachable. 1.59 code.newLocal(((JCVariableDecl) tree).sym); 1.60 @@ -784,7 +786,7 @@ 1.61 */ 1.62 public CondItem genCond(JCTree _tree, boolean markBranches) { 1.63 JCTree inner_tree = TreeInfo.skipParens(_tree); 1.64 - if (inner_tree.getTag() == JCTree.CONDEXPR) { 1.65 + if (inner_tree.hasTag(CONDEXPR)) { 1.66 JCConditional tree = (JCConditional)inner_tree; 1.67 CondItem cond = genCond(tree.cond, CRT_FLOW_CONTROLLER); 1.68 if (cond.isTrue()) { 1.69 @@ -1033,7 +1035,7 @@ 1.70 Env<GenContext> localEnv = env.dup(tree, new GenContext()); 1.71 genStats(tree.stats, localEnv); 1.72 // End the scope of all block-local variables in variable info. 1.73 - if (env.tree.getTag() != JCTree.METHODDEF) { 1.74 + if (!env.tree.hasTag(METHODDEF)) { 1.75 code.statBegin(tree.endpos); 1.76 code.endScopes(limit); 1.77 code.pendingStatPos = Position.NOPOS; 1.78 @@ -1628,11 +1630,11 @@ 1.79 // Optimize x++ to ++x and x-- to --x. 1.80 JCExpression e = tree.expr; 1.81 switch (e.getTag()) { 1.82 - case JCTree.POSTINC: 1.83 - ((JCUnary) e).setTag(JCTree.PREINC); 1.84 + case POSTINC: 1.85 + ((JCUnary) e).setTag(PREINC); 1.86 break; 1.87 - case JCTree.POSTDEC: 1.88 - ((JCUnary) e).setTag(JCTree.PREDEC); 1.89 + case POSTDEC: 1.90 + ((JCUnary) e).setTag(PREDEC); 1.91 break; 1.92 } 1.93 genExpr(tree.expr, tree.expr.type).drop(); 1.94 @@ -1819,13 +1821,13 @@ 1.95 // If we have an increment of -32768 to +32767 of a local 1.96 // int variable we can use an incr instruction instead of 1.97 // proceeding further. 1.98 - if ((tree.getTag() == JCTree.PLUS_ASG || tree.getTag() == JCTree.MINUS_ASG) && 1.99 + if ((tree.hasTag(PLUS_ASG) || tree.hasTag(MINUS_ASG)) && 1.100 l instanceof LocalItem && 1.101 tree.lhs.type.tag <= INT && 1.102 tree.rhs.type.tag <= INT && 1.103 tree.rhs.type.constValue() != null) { 1.104 int ival = ((Number) tree.rhs.type.constValue()).intValue(); 1.105 - if (tree.getTag() == JCTree.MINUS_ASG) ival = -ival; 1.106 + if (tree.hasTag(MINUS_ASG)) ival = -ival; 1.107 ((LocalItem)l).incr(ival); 1.108 result = l; 1.109 return; 1.110 @@ -1841,29 +1843,29 @@ 1.111 1.112 public void visitUnary(JCUnary tree) { 1.113 OperatorSymbol operator = (OperatorSymbol)tree.operator; 1.114 - if (tree.getTag() == JCTree.NOT) { 1.115 + if (tree.hasTag(NOT)) { 1.116 CondItem od = genCond(tree.arg, false); 1.117 result = od.negate(); 1.118 } else { 1.119 Item od = genExpr(tree.arg, operator.type.getParameterTypes().head); 1.120 switch (tree.getTag()) { 1.121 - case JCTree.POS: 1.122 + case POS: 1.123 result = od.load(); 1.124 break; 1.125 - case JCTree.NEG: 1.126 + case NEG: 1.127 result = od.load(); 1.128 code.emitop0(operator.opcode); 1.129 break; 1.130 - case JCTree.COMPL: 1.131 + case COMPL: 1.132 result = od.load(); 1.133 emitMinusOne(od.typecode); 1.134 code.emitop0(operator.opcode); 1.135 break; 1.136 - case JCTree.PREINC: case JCTree.PREDEC: 1.137 + case PREINC: case PREDEC: 1.138 od.duplicate(); 1.139 if (od instanceof LocalItem && 1.140 (operator.opcode == iadd || operator.opcode == isub)) { 1.141 - ((LocalItem)od).incr(tree.getTag() == JCTree.PREINC ? 1 : -1); 1.142 + ((LocalItem)od).incr(tree.hasTag(PREINC) ? 1 : -1); 1.143 result = od; 1.144 } else { 1.145 od.load(); 1.146 @@ -1877,12 +1879,12 @@ 1.147 result = items.makeAssignItem(od); 1.148 } 1.149 break; 1.150 - case JCTree.POSTINC: case JCTree.POSTDEC: 1.151 + case POSTINC: case POSTDEC: 1.152 od.duplicate(); 1.153 if (od instanceof LocalItem && 1.154 (operator.opcode == iadd || operator.opcode == isub)) { 1.155 Item res = od.load(); 1.156 - ((LocalItem)od).incr(tree.getTag() == JCTree.POSTINC ? 1 : -1); 1.157 + ((LocalItem)od).incr(tree.hasTag(POSTINC) ? 1 : -1); 1.158 result = res; 1.159 } else { 1.160 Item res = od.load(); 1.161 @@ -1898,7 +1900,7 @@ 1.162 result = res; 1.163 } 1.164 break; 1.165 - case JCTree.NULLCHK: 1.166 + case NULLCHK: 1.167 result = od.load(); 1.168 code.emitop0(dup); 1.169 genNullCheck(tree.pos()); 1.170 @@ -1926,7 +1928,7 @@ 1.171 // Convert buffer to string. 1.172 bufferToString(tree.pos()); 1.173 result = items.makeStackItem(syms.stringType); 1.174 - } else if (tree.getTag() == JCTree.AND) { 1.175 + } else if (tree.hasTag(AND)) { 1.176 CondItem lcond = genCond(tree.lhs, CRT_FLOW_CONTROLLER); 1.177 if (!lcond.isFalse()) { 1.178 Chain falseJumps = lcond.jumpFalse(); 1.179 @@ -1940,7 +1942,7 @@ 1.180 } else { 1.181 result = lcond; 1.182 } 1.183 - } else if (tree.getTag() == JCTree.OR) { 1.184 + } else if (tree.hasTag(OR)) { 1.185 CondItem lcond = genCond(tree.lhs, CRT_FLOW_CONTROLLER); 1.186 if (!lcond.isTrue()) { 1.187 Chain trueJumps = lcond.jumpTrue(); 1.188 @@ -1997,7 +1999,7 @@ 1.189 */ 1.190 void appendStrings(JCTree tree) { 1.191 tree = TreeInfo.skipParens(tree); 1.192 - if (tree.getTag() == JCTree.PLUS && tree.type.constValue() == null) { 1.193 + if (tree.hasTag(PLUS) && tree.type.constValue() == null) { 1.194 JCBinary op = (JCBinary) tree; 1.195 if (op.operator.kind == MTH && 1.196 ((OperatorSymbol) op.operator).opcode == string_add) { 1.197 @@ -2240,7 +2242,7 @@ 1.198 if (nerrs != 0) { 1.199 // if errors, discard code 1.200 for (List<JCTree> l = cdef.defs; l.nonEmpty(); l = l.tail) { 1.201 - if (l.head.getTag() == JCTree.METHODDEF) 1.202 + if (l.head.hasTag(METHODDEF)) 1.203 ((JCMethodDecl) l.head).sym.code = null; 1.204 } 1.205 }