aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.hgtags9
-rw-r--r--THIRD_PARTY_README4
-rw-r--r--src/share/classes/com/sun/tools/javac/jvm/Gen.java19
-rw-r--r--test/tools/javac/BranchToFewerDefines.java111
4 files changed, 137 insertions, 6 deletions
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
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
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<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 @@ 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;
+ }
+ }
+ }
+}