Merge pull request #6 from bell-sw/update_8u242

jdk8u242 update
diff --git a/.hgtags b/.hgtags
index 46307aa..0182055 100644
--- a/.hgtags
+++ b/.hgtags
@@ -1024,3 +1024,12 @@
 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 7dc54a0..643ea79 100644
--- a/THIRD_PARTY_README
+++ b/THIRD_PARTY_README
@@ -1334,11 +1334,13 @@
 
 --------------------------------------------------------------------------------
 
-%% 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 5f0b6b8..4cc7fb7 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 @@
                 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) {
diff --git a/test/tools/javac/BranchToFewerDefines.java b/test/tools/javac/BranchToFewerDefines.java
new file mode 100644
index 0000000..dabdff6
--- /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;
+                        }
+                }
+        }
+}