From 2fd3a7baafc1f3077bbad0347c06c3b2507fc91b Mon Sep 17 00:00:00 2001 From: mcimadamore Date: Fri, 9 Jan 2015 15:50:22 +0000 Subject: 8067429: java.lang.VerifyError: Inconsistent stackmap frames at branch target Summary: bitset for alive variables contains info about variables out of range Reviewed-by: mcimadamore Contributed-by: srikanth.adayapalam@oracle.com --- src/share/classes/com/sun/tools/javac/jvm/Gen.java | 19 +++- test/tools/javac/BranchToFewerDefines.java | 111 +++++++++++++++++++++ 2 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 test/tools/javac/BranchToFewerDefines.java diff --git a/src/share/classes/com/sun/tools/javac/jvm/Gen.java b/src/share/classes/com/sun/tools/javac/jvm/Gen.java index 5f0b6b84..4cc7fb7b 100644 --- a/src/share/classes/com/sun/tools/javac/jvm/Gen.java +++ b/src/share/classes/com/sun/tools/javac/jvm/Gen.java @@ -1222,9 +1222,10 @@ public class Gen extends JCTree.Visitor { 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 class Gen extends JCTree.Visitor { public void visitLabelled(JCLabeledStatement tree) { Env 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 @@ public class Gen extends JCTree.Visitor { } // 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) { diff --git a/test/tools/javac/BranchToFewerDefines.java b/test/tools/javac/BranchToFewerDefines.java new file mode 100644 index 00000000..dabdff64 --- /dev/null +++ b/test/tools/javac/BranchToFewerDefines.java @@ -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; + } + } + } +} -- cgit v1.2.3 From 394d0a02a8b23c76e0b689627ed19dff3d47628d Mon Sep 17 00:00:00 2001 From: sgehwolf Date: Tue, 17 Dec 2019 06:08:16 +0000 Subject: 8232984: Upgrading Joni License version to 2.1.16 Reviewed-by: andrew --- THIRD_PARTY_README | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/THIRD_PARTY_README b/THIRD_PARTY_README index 7dc54a05..643ea79c 100644 --- a/THIRD_PARTY_README +++ b/THIRD_PARTY_README @@ -1334,11 +1334,13 @@ SUCH DAMAGE. -------------------------------------------------------------------------------- -%% This notice is provided with respect to Joni v1.1.9, which may be +%% This notice is provided with respect to Joni v2.1.16, which may be included with JRE 8, JDK 8, and OpenJDK 8. --- begin of LICENSE --- +Copyright (c) 2017 JRuby Team + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights -- cgit v1.2.3 From 6eeb6dd544b1d1f8322816d2662407492649564c Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 17 Jan 2020 19:08:09 +0000 Subject: Added tag jdk8u242-ga for changeset b2b31daec366 --- .hgtags | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.hgtags b/.hgtags index 46307aa6..01820555 100644 --- a/.hgtags +++ b/.hgtags @@ -1024,3 +1024,12 @@ dd568d0e5e10a0dfc05ace7f16bbac5ad6eddde5 jdk8u232-b06 4bc16c3608302128648e92c80f3b396372471383 jdk8u232-b08 735048c9f2d6835b76a436beffd29565f28a2a36 jdk8u232-b09 735048c9f2d6835b76a436beffd29565f28a2a36 jdk8u232-ga +92a07f0a1bb101933e1c385b7c9d44e3c593e40d jdk8u242-b01 +5b0a0cf41fc1243f32ffe5682ac5dde265902daa jdk8u242-b02 +fbe99e0b4e74edb310cebd774399d80c77be636d jdk8u242-b03 +764b933d3443949279024afa13db853246c4238e jdk8u242-b04 +7f8e21b79cceeda47fb986ecbfd738a08cbb0e54 jdk8u242-b05 +03512b6e35cbe46659ef2568d76836d4fbaa5f25 jdk8u242-b06 +2b1a419389932f0367ab68ad60c4ec209e1ae417 jdk8u242-b07 +b2b31daec366e7725872dd53dd800cbc9ada70c9 jdk8u242-b08 +b2b31daec366e7725872dd53dd800cbc9ada70c9 jdk8u242-ga -- cgit v1.2.3