--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Fri Jan 09 15:49:42 2015 +0000
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Fri Jan 09 15:50:22 2015 +0000
@@ -1096,9 +1096,10 @@
code.resolve(c.jumpTrue(), startpc);
code.resolve(c.falseJumps);
}
- code.resolve(loopEnv.info.exit);
- if (loopEnv.info.exit != null) {
- loopEnv.info.exit.state.defined.excludeFrom(code.nextreg);
+ Chain exit = loopEnv.info.exit;
+ if (exit != null) {
+ code.resolve(exit);
+ exit.state.defined.excludeFrom(code.nextreg);
}
}
@@ -1109,7 +1110,11 @@
public void visitLabelled(JCLabeledStatement tree) {
Env<GenContext> localEnv = env.dup(tree, new GenContext());
genStat(tree.body, localEnv, CRT_STATEMENT);
- code.resolve(localEnv.info.exit);
+ Chain exit = localEnv.info.exit;
+ if (exit != null) {
+ code.resolve(exit);
+ exit.state.defined.excludeFrom(code.nextreg);
+ }
}
public void visitSwitch(JCSwitch tree) {
@@ -1218,7 +1223,11 @@
}
// Resolve all breaks.
- code.resolve(switchEnv.info.exit);
+ Chain exit = switchEnv.info.exit;
+ if (exit != null) {
+ code.resolve(exit);
+ exit.state.defined.excludeFrom(code.nextreg);
+ }
// If we have not set the default offset, we do so now.
if (code.get4(tableBase) == -1) {