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

changeset 1127
ca49d50318dc
parent 1109
3cdfa97e1be9
child 1138
7375d4979bd3
     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              }

mercurial