langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java
changeset 517 ea4702edd512
parent 161 bfe63856332f
child 735 372aa565a221
equal deleted inserted replaced
515:108201f3862c 517:ea4702edd512
  2861             JCBinary cond = makeBinary(JCTree.LT, make.Ident(index), make.Ident(lencache));
  2861             JCBinary cond = makeBinary(JCTree.LT, make.Ident(index), make.Ident(lencache));
  2862 
  2862 
  2863             JCExpressionStatement step = make.Exec(makeUnary(JCTree.PREINC, make.Ident(index)));
  2863             JCExpressionStatement step = make.Exec(makeUnary(JCTree.PREINC, make.Ident(index)));
  2864 
  2864 
  2865             Type elemtype = types.elemtype(tree.expr.type);
  2865             Type elemtype = types.elemtype(tree.expr.type);
  2866             JCStatement loopvarinit = make.
  2866             JCExpression loopvarinit = make.Indexed(make.Ident(arraycache),
  2867                 VarDef(tree.var.sym,
  2867                                                     make.Ident(index)).setType(elemtype);
  2868                        make.
  2868             JCVariableDecl loopvardef = (JCVariableDecl)make.VarDef(tree.var.mods,
  2869                        Indexed(make.Ident(arraycache), make.Ident(index)).
  2869                                                   tree.var.name,
  2870                        setType(elemtype));
  2870                                                   tree.var.vartype,
       
  2871                                                   loopvarinit).setType(tree.var.type);
       
  2872             loopvardef.sym = tree.var.sym;
  2871             JCBlock body = make.
  2873             JCBlock body = make.
  2872                 Block(0, List.of(loopvarinit, tree.body));
  2874                 Block(0, List.of(loopvardef, tree.body));
  2873 
  2875 
  2874             result = translate(make.
  2876             result = translate(make.
  2875                                ForLoop(loopinit,
  2877                                ForLoop(loopinit,
  2876                                        cond,
  2878                                        cond,
  2877                                        List.of(step),
  2879                                        List.of(step),
  2942                                        itvar.type,
  2944                                        itvar.type,
  2943                                        List.<Type>nil());
  2945                                        List.<Type>nil());
  2944             JCExpression vardefinit = make.App(make.Select(make.Ident(itvar), next));
  2946             JCExpression vardefinit = make.App(make.Select(make.Ident(itvar), next));
  2945             if (iteratorTarget != syms.objectType)
  2947             if (iteratorTarget != syms.objectType)
  2946                 vardefinit = make.TypeCast(iteratorTarget, vardefinit);
  2948                 vardefinit = make.TypeCast(iteratorTarget, vardefinit);
  2947             JCVariableDecl indexDef = make.VarDef(tree.var.sym, vardefinit);
  2949             JCVariableDecl indexDef = (JCVariableDecl)make.VarDef(tree.var.mods,
       
  2950                                                   tree.var.name,
       
  2951                                                   tree.var.vartype,
       
  2952                                                   vardefinit).setType(tree.var.type);
       
  2953             indexDef.sym = tree.var.sym;
  2948             JCBlock body = make.Block(0, List.of(indexDef, tree.body));
  2954             JCBlock body = make.Block(0, List.of(indexDef, tree.body));
  2949             result = translate(make.
  2955             result = translate(make.
  2950                 ForLoop(List.of(init),
  2956                 ForLoop(List.of(init),
  2951                         cond,
  2957                         cond,
  2952                         List.<JCExpressionStatement>nil(),
  2958                         List.<JCExpressionStatement>nil(),