# HG changeset patch
# User andrew
# Date 1621473948 -3600
#      Thu May 20 02:25:48 2021 +0100
# Node ID 0bf77253975182bd6f2a46505228b0a27b0c6176
# Parent  d5cd4b84ea7f0725d2668091b51613cd255a6167
# Parent  c94d325a24672375c4767ae08bece4e7d6ea210d
Merge jdk8u302-b01

diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -1305,3 +1305,6 @@
 f544e07ed90109262dfb82d1a75044878ee5194d aarch64-shenandoah-jdk8u292-b09
 e096ebc661e8c12321891587c0351a66f165143c jdk8u292-b10
 060c8b96c774d079a8b859e90aa6ffe85c5664c8 aarch64-shenandoah-jdk8u292-b10
+e096ebc661e8c12321891587c0351a66f165143c jdk8u292-ga
+cd6eb36db1bbeb5b638a577059ecf0a4c4a90b82 jdk8u302-b00
+55148c63b3e8b5a23d4eef33a7bab2c57396a32e jdk8u302-b01
diff --git a/src/share/classes/com/sun/tools/javac/comp/Check.java b/src/share/classes/com/sun/tools/javac/comp/Check.java
--- a/src/share/classes/com/sun/tools/javac/comp/Check.java
+++ b/src/share/classes/com/sun/tools/javac/comp/Check.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2019, 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
@@ -2617,6 +2617,8 @@
             if (type.isErroneous()) return;
             for (List<Type> l = types.interfaces(type); l.nonEmpty(); l = l.tail) {
                 Type it = l.head;
+                if (type.hasTag(CLASS) && !it.hasTag(CLASS)) continue; // JLS 8.1.5
+
                 Type oldit = seensofar.put(it.tsym, it);
                 if (oldit != null) {
                     List<Type> oldparams = oldit.allparams();
@@ -2629,6 +2631,7 @@
                 checkClassBounds(pos, seensofar, it);
             }
             Type st = types.supertype(type);
+            if (type.hasTag(CLASS) && !st.hasTag(CLASS)) return; // JLS 8.1.4
             if (st != Type.noType) checkClassBounds(pos, seensofar, st);
         }
 
diff --git a/test/Makefile b/test/Makefile
--- a/test/Makefile
+++ b/test/Makefile
@@ -139,21 +139,19 @@
 
 # Default JDK for JTREG and JCK
 #
-# JT_JAVA is the version of java used to run jtreg/JCK. Since it is now
-# standard to execute tests in sameVM mode, it should normally be set the
-# same as TESTJAVA (although not necessarily so.)
+# JT_JAVA is the version of java used to run jtreg/JCK. 
 #
 ifdef JPRT_JAVA_HOME
   JT_JAVA = $(JPRT_JAVA_HOME)
 else
-  JT_JAVA = $(SLASH_JAVA)/re/jdk/1.7.0/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
+  JT_JAVA = $(SLASH_JAVA)/re/jdk/1.9.0/archive/fcs/binaries/$(PLATFORM)-$(ARCH)
 endif
 
 # Default JDK to test
 ifdef JPRT_IMPORT_PRODUCT_HOME
   TESTJAVA = $(JPRT_IMPORT_PRODUCT_HOME)
 else
-  TESTJAVA = $(SLASH_JAVA)/re/jdk/1.7.0/promoted/latest/binaries/$(PLATFORM)-$(ARCH)
+  TESTJAVA = $(SLASH_JAVA)/re/jdk/1.9.0/promoted/latest/binaries/$(PLATFORM)-$(ARCH)
 endif
 
 # PRODUCT_HOME is a JPRT variable pointing to a directory containing the output from
@@ -186,7 +184,7 @@
 ifdef CONCURRENCY
   JTREG_OPTIONS += -agentvm -concurrency:$(CONCURRENCY)
 else
-  JTREG_OPTIONS += -samevm
+  JTREG_OPTIONS += -agentvm
 endif
 
 ifdef JCK_CONCURRENCY
diff --git a/test/tools/javac/diags/examples/NoJavaLang.java b/test/tools/javac/diags/examples/NoJavaLang.java
--- a/test/tools/javac/diags/examples/NoJavaLang.java
+++ b/test/tools/javac/diags/examples/NoJavaLang.java
@@ -22,7 +22,7 @@
  */
 
 // key: compiler.misc.fatal.err.no.java.lang
-// options: -Xbootclasspath:
+// options: -Xbootclasspath: -classpath .
 // run: backdoor
 
 class NoJavaLang { }
diff --git a/test/tools/javac/fatalErrors/NoJavaLangTest.java b/test/tools/javac/fatalErrors/NoJavaLangTest.java
--- a/test/tools/javac/fatalErrors/NoJavaLangTest.java
+++ b/test/tools/javac/fatalErrors/NoJavaLangTest.java
@@ -58,7 +58,7 @@
         List<String> output = new ArrayList<>();
         ToolBox.JavaToolArgs javacFailArgs =
                 new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL)
-                .setOptions("-bootclasspath", ".")
+                .setOptions("-bootclasspath", ".", "-classpath", ".")
                 .setSources(noJavaLangSrc)
                 .setErrOutput(output);
 
diff --git a/test/tools/javac/generics/ClassBoundCheckingOverflow.java b/test/tools/javac/generics/ClassBoundCheckingOverflow.java
new file mode 100644
--- /dev/null
+++ b/test/tools/javac/generics/ClassBoundCheckingOverflow.java
@@ -0,0 +1,12 @@
+/*
+ * @test /nodynamiccopyright/
+ * @bug 8214345
+ * @summary infinite recursion while checking super class
+ *
+ * @compile/fail/ref=ClassBoundCheckingOverflow.out -XDrawDiagnostics ClassBoundCheckingOverflow.java
+ */
+
+public class ClassBoundCheckingOverflow {
+    abstract class InfiniteLoop1<E extends InfiniteLoop1<E>> extends E {}
+    abstract class InfiniteLoop2<E extends InfiniteLoop2<E>> implements E {}
+}
diff --git a/test/tools/javac/generics/ClassBoundCheckingOverflow.out b/test/tools/javac/generics/ClassBoundCheckingOverflow.out
new file mode 100644
--- /dev/null
+++ b/test/tools/javac/generics/ClassBoundCheckingOverflow.out
@@ -0,0 +1,3 @@
+ClassBoundCheckingOverflow.java:10:70: compiler.err.type.found.req: (compiler.misc.type.parameter: E), (compiler.misc.type.req.class)
+ClassBoundCheckingOverflow.java:11:73: compiler.err.type.found.req: (compiler.misc.type.parameter: E), (compiler.misc.type.req.class)
+2 errors