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

changeset 2541
77e510138519
parent 2534
71a31843f550
child 2566
58e7e71b302e
equal deleted inserted replaced
2540:c7947fd930eb 2541:77e510138519
1192 JCExpression cond, 1192 JCExpression cond,
1193 List<JCExpressionStatement> step, 1193 List<JCExpressionStatement> step,
1194 boolean testFirst) { 1194 boolean testFirst) {
1195 Env<GenContext> loopEnv = env.dup(loop, new GenContext()); 1195 Env<GenContext> loopEnv = env.dup(loop, new GenContext());
1196 int startpc = code.entryPoint(); 1196 int startpc = code.entryPoint();
1197 if (testFirst) { 1197 if (testFirst) { //while or for loop
1198 CondItem c; 1198 CondItem c;
1199 if (cond != null) { 1199 if (cond != null) {
1200 code.statBegin(cond.pos); 1200 code.statBegin(cond.pos);
1201 c = genCond(TreeInfo.skipParens(cond), CRT_FLOW_CONTROLLER); 1201 c = genCond(TreeInfo.skipParens(cond), CRT_FLOW_CONTROLLER);
1202 } else { 1202 } else {
1238 } 1238 }
1239 code.resolve(c.jumpTrue(), startpc); 1239 code.resolve(c.jumpTrue(), startpc);
1240 code.resolve(c.falseJumps); 1240 code.resolve(c.falseJumps);
1241 } 1241 }
1242 code.resolve(loopEnv.info.exit); 1242 code.resolve(loopEnv.info.exit);
1243 if (loopEnv.info.exit != null) {
1244 loopEnv.info.exit.state.defined.excludeFrom(code.nextreg);
1245 }
1243 } 1246 }
1244 1247
1245 private enum LoopLocalVarRangeEndingPoint { 1248 private enum LoopLocalVarRangeEndingPoint {
1246 BEFORE_STEPS, 1249 BEFORE_STEPS,
1247 AFTER_STEPS, 1250 AFTER_STEPS,

mercurial