Mercurial > hg > icedtea8-forest > langtools
changeset 3963:80b6585d1877 icedtea-3.15.0pre01
Merge jdk8u242-b01
author | andrew |
---|---|
date | Wed, 27 Nov 2019 04:05:07 +0000 |
parents | d52c778b6fae (current diff) 92a07f0a1bb1 (diff) |
children | 725f09b58071 |
files | .hgtags |
diffstat | 3 files changed, 126 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgtags Tue Nov 26 02:33:14 2019 +0000 +++ b/.hgtags Wed Nov 27 04:05:07 2019 +0000 @@ -1073,6 +1073,7 @@ 671c4ba50c6f4f9780d40de2549d91f15fcb88d1 jdk8u232-b03 3de2732a8241c8c85a85942f7341ad48491976d9 jdk8u232-b04 415c49110391d46dbb9be24154c2ad1b4157790a jdk8u232-b05 +2338eb5fa755608b47e12ae1d8baa217cd64ee98 jdk8u242-b00 dd568d0e5e10a0dfc05ace7f16bbac5ad6eddde5 jdk8u232-b06 3b3a43588afb9fbdb1b95c475a11d3529a3d9cb5 jdk8u232-b07 4bc16c3608302128648e92c80f3b396372471383 jdk8u232-b08
--- a/src/share/classes/com/sun/tools/javac/jvm/Gen.java Tue Nov 26 02:33:14 2019 +0000 +++ b/src/share/classes/com/sun/tools/javac/jvm/Gen.java Wed Nov 27 04:05:07 2019 +0000 @@ -1222,9 +1222,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); } } @@ -1235,7 +1236,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) { @@ -1344,7 +1349,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) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/BranchToFewerDefines.java Wed Nov 27 04:05:07 2019 +0000 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8067429 + * @summary java.lang.VerifyError: Inconsistent stackmap frames at branch target + * @author srikanth + * + * @compile BranchToFewerDefines.java + * @run main BranchToFewerDefines + */ + +public class BranchToFewerDefines { + public static void main(String[] args) { + } + private void problematicMethod(int p) { + switch (p) { + case 3: + long n; + while (true) { + if (false) { + break; + } + } + break; + case 2: + loop: while (true) { + while (true) { + int i = 4; + if (p != 16) { + return; + } + break loop; + } + } + break; + default: + while (true) { + if (false) { + break; + } + } + break; + } + long b; + if (p != 7) { + switch (p) { + case 1: + long a = 17; + break; + case 2: + break; + default: + break; + } + } + } + private void problematicMethod2(int p) { + switch (p) { + case 3: + long n; + { + int i = 4; + break; + } + case 2: + { + int i = 4; + break; + } + default: + { + int i = 4; + break; + } + } + long b; + if (p != 7) { + switch (p) { + case 1: + long a = 17; + break; + case 2: + break; + default: + break; + } + } + } +}