changeset 58661:57fcdeb4a5b2 lworld

8237069: [lworld] Introduce and wire-in the new top interfaces
author sadayapalam
date Tue, 28 Jan 2020 14:44:22 +0530
parents 9d2ec504577f
children e2f1c4d5f39e
files make/CompileJavaModules.gmk src/java.base/share/classes/java/lang/IdentityObject.java src/java.base/share/classes/java/lang/InlineObject.java src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties test/jdk/java/lang/annotation/TypeAnnotationReflection.java test/langtools/jdk/javadoc/doclet/testClassTree/TestClassTree.java test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java test/langtools/jdk/javadoc/doclet/testHiddenTag/TestHiddenTag.java test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java test/langtools/jdk/javadoc/doclet/testHtmlTag/TestHtmlTag.java test/langtools/jdk/javadoc/doclet/testInterface/TestInterface.java test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java test/langtools/jdk/javadoc/doclet/testMemberInheritance/TestMemberInheritance.java test/langtools/jdk/javadoc/doclet/testModules/TestModules.java test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java test/langtools/jdk/javadoc/doclet/testOptions/TestOptions.java test/langtools/jdk/javadoc/doclet/testPrivateClasses/TestPrivateClasses.java test/langtools/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java test/langtools/jdk/javadoc/doclet/testUserTaglet/TestUserTaglet.java test/langtools/jdk/jshell/InaccessibleExpressionTest.java test/langtools/jdk/jshell/ToolBasicTest.java test/langtools/jdk/jshell/ToolLocalSimpleTest.java test/langtools/jdk/jshell/ToolSimpleTest.java test/langtools/jdk/jshell/TypeNameTest.java test/langtools/jdk/jshell/VariablesTest.java test/langtools/tools/javac/T8187978/FilterOutCandidatesForDiagnosticsTest.out test/langtools/tools/javac/annotations/typeAnnotations/classfile/AnnotatedExtendsTest.java test/langtools/tools/javac/annotations/typeAnnotations/classfile/BridgeShouldHaveNoInteriorAnnotationsTest.java test/langtools/tools/javac/annotations/typeAnnotations/classfile/NestedLambdasCastedTest.java test/langtools/tools/javac/classfiles/attributes/Signature/ConstructorTest.java test/langtools/tools/javac/classfiles/attributes/Signature/EnumTest.java test/langtools/tools/javac/classfiles/attributes/Signature/ExceptionTest.java test/langtools/tools/javac/classfiles/attributes/Signature/FieldTest.java test/langtools/tools/javac/classfiles/attributes/Signature/InnerClassTest.java test/langtools/tools/javac/classfiles/attributes/Signature/MethodParameterTest.java test/langtools/tools/javac/classfiles/attributes/Signature/MethodTypeBoundTest.java test/langtools/tools/javac/classfiles/attributes/Signature/ReturnTypeTest.java test/langtools/tools/javac/diags/examples.not-yet.txt test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTestb.out test/langtools/tools/javac/processing/model/element/TestMissingElement/TestMissingElement.java test/langtools/tools/javac/processing/model/util/printing/module-info.out test/langtools/tools/javac/processing/options/XprintDocComments.out test/langtools/tools/javac/processing/rounds/GenerateAnonymousClass.out test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_1.out test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_2.out test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_3.out test/langtools/tools/javac/valhalla/lworld-values/CheckFinal.out test/langtools/tools/javac/valhalla/lworld-values/TopInterfaceNegativeTest.java test/langtools/tools/javac/valhalla/lworld-values/TopInterfaceNegativeTest.out test/langtools/tools/javac/valhalla/lworld-values/TopInterfaceTest.java test/langtools/tools/javac/valhalla/lworld-values/ValueModifierTest.out test/langtools/tools/javap/8006334/JavapTaskCtorFailWithNPE.java test/langtools/tools/javap/AnnoTest.java test/langtools/tools/javap/T4880663.java test/langtools/tools/javap/TestSuperclass.java test/langtools/tools/javap/classfile/6888367/T6888367.java test/langtools/tools/javap/classfile/T6887895.java test/langtools/tools/javap/classfile/deps/T6907575.out test/langtools/tools/javap/typeAnnotations/InvisibleParameterAnnotationsTest.java test/langtools/tools/jdeps/APIDeps.java test/langtools/tools/jdeps/Basic.java test/langtools/tools/jdeps/DotFileTest.java test/langtools/tools/jdeps/MultiReleaseJar.java test/langtools/tools/jdeps/jdkinternals/RemovedJDKInternals.java
diffstat 70 files changed, 408 insertions(+), 89 deletions(-) [+]
line wrap: on
line diff
--- a/make/CompileJavaModules.gmk	Mon Jan 13 17:18:47 2020 -0800
+++ b/make/CompileJavaModules.gmk	Tue Jan 28 14:44:22 2020 +0530
@@ -232,7 +232,7 @@
 
 ################################################################################
 
-java.management.rmi_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:javax.*'
+java.management.rmi_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:javax.*' -XDnoTopInterfaceInjection
 
 ################################################################################
 
@@ -256,7 +256,7 @@
 
 ################################################################################
 
-java.rmi_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
+java.rmi_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*' -XDnoTopInterfaceInjection
 java.rmi_CLEAN_FILES += $(wildcard \
     $(TOPDIR)/src/java.rmi/share/classes/sun/rmi/registry/resources/*.properties \
     $(TOPDIR)/src/java.rmi/share/classes/sun/rmi/server/resources/*.properties)
@@ -279,6 +279,10 @@
 
 ################################################################################
 
+jdk.naming.rmi_ADD_JAVAC_FLAGS += -XDnoTopInterfaceInjection
+
+################################################################################
+
 java.smartcardio_ADD_JAVAC_FLAGS += -Xdoclint:all/protected,-accessibility '-Xdoclint/package:java.*,javax.*'
 
 ################################################################################
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/java/lang/IdentityObject.java	Tue Jan 28 14:44:22 2020 +0530
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package java.lang;
+
+/**
+ * A restricted interface implemented by all identity objects.
+ * @since 1.14
+*/
+public interface IdentityObject {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.base/share/classes/java/lang/InlineObject.java	Tue Jan 28 14:44:22 2020 +0530
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 2020 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.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package java.lang;
+
+/**
+ * A restricted interface implemented by all inline objects.
+ * @since 1.14
+ */
+public interface InlineObject {
+}
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java	Tue Jan 28 14:44:22 2020 +0530
@@ -217,6 +217,8 @@
     public final Type functionalInterfaceType;
     public final Type previewFeatureType;
     public final Type valueBasedType;
+    public final Type inlineObjectType;
+    public final Type identityObjectType;
 
     /** The symbol representing the length field of an array.
      */
@@ -576,6 +578,8 @@
         functionalInterfaceType = enterClass("java.lang.FunctionalInterface");
         previewFeatureType = enterClass("jdk.internal.PreviewFeature");
         valueBasedType = enterClass("java.lang.ValueBased");
+        identityObjectType = enterClass("java.lang.IdentityObject");
+        inlineObjectType = enterClass("java.lang.InlineObject");
 
         synthesizeEmptyInterfaceIfMissing(autoCloseableType);
         synthesizeEmptyInterfaceIfMissing(cloneableType);
@@ -583,6 +587,8 @@
         synthesizeEmptyInterfaceIfMissing(lambdaMetafactory);
         synthesizeEmptyInterfaceIfMissing(serializedLambdaType);
         synthesizeEmptyInterfaceIfMissing(stringConcatFactory);
+        synthesizeEmptyInterfaceIfMissing(inlineObjectType);
+        synthesizeEmptyInterfaceIfMissing(identityObjectType);
         synthesizeBoxTypeIfMissing(doubleType);
         synthesizeBoxTypeIfMissing(floatType);
         synthesizeBoxTypeIfMissing(voidType);
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Types.java	Tue Jan 28 14:44:22 2020 +0530
@@ -1001,7 +1001,7 @@
     }
 
     public boolean isValue(Type t) {
-        return t != null && t.tsym != null && (t.tsym.flags() & Flags.VALUE) != 0;
+        return t != null && t.tsym != null && (t.tsym.flags_field & Flags.VALUE) != 0;
     }
 
     public boolean isValueBased(Type t) {
@@ -1021,7 +1021,14 @@
         ClassType loxType = new ClassType(ct.getEnclosingType(), ct.typarams_field, null);
         loxType.allparams_field = ct.allparams_field;
         loxType.supertype_field = ct.supertype_field;
-        loxType.interfaces_field = ct.interfaces_field;
+        loxType.interfaces_field = List.nil();
+        for (Type t :ct.interfaces_field) {
+            if (t.tsym == syms.inlineObjectType.tsym) {
+                loxType.interfaces_field  = loxType.interfaces_field.append(syms.identityObjectType);
+            } else {
+                loxType.interfaces_field  = loxType.interfaces_field.append(t);
+            }
+        }
         loxType.all_interfaces_field = ct.all_interfaces_field;
         lox = new ClassSymbol((c.flags() & ~VALUE), c.name, loxType, c.owner) {
             @Override
@@ -2511,8 +2518,11 @@
         if (allInterfaces) {
             bounds = bounds.prepend(syms.objectType);
         }
+        long flags = ABSTRACT | PUBLIC | SYNTHETIC | COMPOUND | ACYCLIC;
+        if (isValue(bounds.head))
+            flags |= VALUE;
         ClassSymbol bc =
-            new ClassSymbol(ABSTRACT|PUBLIC|SYNTHETIC|COMPOUND|ACYCLIC,
+            new ClassSymbol(flags,
                             Type.moreInfo
                                 ? names.fromString(bounds.toString())
                                 : names.empty,
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java	Tue Jan 28 14:44:22 2020 +0530
@@ -985,6 +985,9 @@
                         env.tree.hasTag(NEWCLASS)) {
                     c.flags_field |= NOOUTERTHIS;
                 }
+                if (env.tree.hasTag(NEWCLASS) && types.isValue(c.getSuperclass())) {
+                    c.flags_field |= VALUE; // avoid further secondary errors.
+                }
                 attribClass(tree.pos(), c);
                 result = tree.type = c.type;
             }
@@ -4858,7 +4861,7 @@
                 implementing = bounds;
             }
             JCClassDecl cd = make.at(tree).ClassDef(
-                make.Modifiers(PUBLIC | ABSTRACT),
+                make.Modifiers(PUBLIC | ABSTRACT | (extending != null && TreeInfo.symbol(extending).isValue() ? VALUE : 0)),
                 names.empty, List.nil(),
                 extending, implementing, List.nil());
 
@@ -5190,7 +5193,7 @@
                     log.error(l.head.pos(), Errors.IclsCantHaveStaticDecl(c));
             }
         }
-        if (!allowEmptyValues && !hasInstanceFields && (c.flags() & VALUE) != 0) {
+        if (!allowEmptyValues && !hasInstanceFields && (c.flags() & (VALUE | SYNTHETIC)) == VALUE) {
             log.error(tree.pos(), Errors.EmptyValueNotYet);
         }
 
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java	Tue Jan 28 14:44:22 2020 +0530
@@ -2558,6 +2558,15 @@
                     return;
         }
         checkCompatibleConcretes(pos, c);
+        boolean isIdentityObject = types.asSuper(c, syms.identityObjectType.tsym) != null;
+        boolean isInlineObject = types.asSuper(c, syms.inlineObjectType.tsym) != null;
+        if (types.isValue(c) && isIdentityObject) {
+            log.error(pos, Errors.InlineTypeMustNotImplementIdentityObject(c));
+        } else if (!c.isInterface() && !types.isValue(c) && isInlineObject) {
+            log.error(pos, Errors.IdentityTypeMustNotImplementInlineObject(c));
+        } else if (isIdentityObject && isInlineObject) {
+            log.error(pos, Errors.MutuallyIncompatibleInterfaces(c));
+        }
     }
 
     /** Check that all non-override equivalent methods accessible from 'site'
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TypeEnter.java	Tue Jan 28 14:44:22 2020 +0530
@@ -39,6 +39,7 @@
 import com.sun.tools.javac.code.Scope.WriteableScope;
 import com.sun.tools.javac.code.Source.Feature;
 import com.sun.tools.javac.comp.Annotate.AnnotationTypeMetadata;
+import com.sun.tools.javac.jvm.Target;
 import com.sun.tools.javac.tree.*;
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.DefinedBy.Api;
@@ -140,6 +141,9 @@
         Source source = Source.instance(context);
         allowTypeAnnos = Feature.TYPE_ANNOTATIONS.allowedInSource(source);
         allowDeprecationOnImport = Feature.DEPRECATION_ON_IMPORT.allowedInSource(source);
+        injectTopInterfaceTypes = Options.instance(context).isUnset("noTopInterfaceInjection") &&
+                                        Feature.INLINE_TYPES.allowedInSource(source) &&
+                                            Target.instance(context).hasTopInterfaces();
     }
 
     /** Switch: support type annotations.
@@ -151,6 +155,10 @@
      */
     boolean allowDeprecationOnImport;
 
+    /** Switch: inject top interface types.
+     */
+    boolean injectTopInterfaceTypes;
+
     /** A flag to disable completion from time to time during member
      *  enter, as we only need to look up types.  This avoids
      *  unnecessarily deep recursion.
@@ -692,6 +700,17 @@
             }
             ct.supertype_field = modelMissingTypes(baseEnv, supertype, extending, false);
 
+            Type interfaceToInject = Type.noType;
+            if (injectTopInterfaceTypes) {
+                if (isValueType || types.isValue(supertype)) {
+                    interfaceToInject = syms.inlineObjectType;
+                } else if ((sym.flags_field & INTERFACE) == 0) { // skip interfaces and annotations.
+                    if (sym.fullname != names.java_lang_Object) {
+                        interfaceToInject = syms.identityObjectType;
+                    }
+                }
+            }
+
             // Determine interfaces.
             ListBuffer<Type> interfaces = new ListBuffer<>();
             ListBuffer<Type> all_interfaces = null; // lazy init
@@ -699,6 +718,9 @@
             for (JCExpression iface : interfaceTrees) {
                 iface = clearTypeParams(iface);
                 Type it = attr.attribBase(iface, baseEnv, false, true, true);
+                if (it.tsym == interfaceToInject.tsym) {
+                    interfaceToInject = Type.noType;
+                }
                 if (it.hasTag(CLASS)) {
                     interfaces.append(it);
                     if (all_interfaces != null) all_interfaces.append(it);
@@ -713,6 +735,9 @@
                 ct.interfaces_field = List.of(syms.annotationType);
                 ct.all_interfaces_field = ct.interfaces_field;
             }  else {
+                if (interfaceToInject != Type.noType) {
+                    interfaces.append(interfaceToInject);
+                }
                 ct.interfaces_field = interfaces.toList();
                 ct.all_interfaces_field = (all_interfaces == null)
                         ? ct.interfaces_field : all_interfaces.toList();
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java	Tue Jan 28 14:44:22 2020 +0530
@@ -172,4 +172,10 @@
         return compareTo(JDK1_11) >= 0;
     }
 
+    /** Does the target VM support new top interfaces?
+     */
+    public boolean hasTopInterfaces() {
+        return compareTo(JDK1_14) >= 0;
+    }
+
 }
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Mon Jan 13 17:18:47 2020 -0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties	Tue Jan 28 14:44:22 2020 +0530
@@ -3597,3 +3597,16 @@
 # 0: type
 compiler.err.generic.parameterization.with.value.type=\
     Inferred type {0} involves generic parameterization by an inline type; This is allowed only with -XDallowGenericsOverValues
+
+# 0: type
+compiler.err.inline.type.must.not.implement.identity.object=\
+    The inline type {0} attempts to implement the incompatible interface IdentityObject
+
+# 0: type
+compiler.err.identity.type.must.not.implement.inline.object=\
+    The identity type {0} attempts to implement the incompatible interface InlineObject
+
+# 0: type
+compiler.err.mutually.incompatible.interfaces=\
+    The interfaces IdentityObject and InlineObject are mutually exclusive. The type {0} cannot implement both 
+
--- a/test/jdk/java/lang/annotation/TypeAnnotationReflection.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/jdk/java/lang/annotation/TypeAnnotationReflection.java	Tue Jan 28 14:44:22 2020 +0530
@@ -74,8 +74,9 @@
     private static void testInterfaces() throws Exception {
         AnnotatedType[] as;
         as = TestClassArray.class.getAnnotatedInterfaces();
-        check(as.length == 3);
+        check(as.length == 4);
         check(as[1].getAnnotations().length == 0);
+        check(as[3].getAnnotations().length == 0);
 
         Annotation[] annos;
         annos = as[0].getAnnotations();
@@ -326,8 +327,9 @@
         // Base
         AnnotatedType[] as;
         as = TestParameterizedType.class.getAnnotatedInterfaces();
-        check(as.length == 1);
+        check(as.length == 2);
         check(as[0].getAnnotations().length == 1);
+        check(as[1].getAnnotations().length == 0);
         check(as[0].getAnnotation(TypeAnno.class).value().equals("M"));
 
         Annotation[] annos;
--- a/test/langtools/jdk/javadoc/doclet/testClassTree/TestClassTree.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testClassTree/TestClassTree.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug      4632553 4973607 8026567
  * @summary  No need to include type name (class, interface, etc.) before
--- a/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testDeprecatedDocs/TestDeprecatedDocs.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug      4927552 8026567 8071982 8162674 8175200 8175218 8183511 8186332
  *           8169819 8074407 8191030 8182765 8184205
--- a/test/langtools/jdk/javadoc/doclet/testHiddenTag/TestHiddenTag.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testHiddenTag/TestHiddenTag.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8073100 8182765 8196202
  * @summary ensure the hidden tag works as intended
--- a/test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlDefinitionListTag/TestHtmlDefinitionListTag.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 6786690 6820360 8025633 8026567 8175200 8183511 8186332 8074407 8182765
  * @summary This test verifies the nesting of definition list tags.
--- a/test/langtools/jdk/javadoc/doclet/testHtmlTag/TestHtmlTag.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testHtmlTag/TestHtmlTag.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 6786682 4649116 8182765
  * @summary This test verifies the use of lang attribute by <HTML>.
--- a/test/langtools/jdk/javadoc/doclet/testInterface/TestInterface.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testInterface/TestInterface.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug      4682448 4947464 5029946 8025633 8026567 8035473 8139101 8175200
              8186332 8186703 8182765 8187288
--- a/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testLinkOption/TestLinkOption.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 4720957 5020118 8026567 8038976 8184969 8164407 8182765 8205593
  * @summary Test to make sure that -link and -linkoffline link to
--- a/test/langtools/jdk/javadoc/doclet/testMemberInheritance/TestMemberInheritance.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testMemberInheritance/TestMemberInheritance.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 4638588 4635809 6256068 6270645 8025633 8026567 8162363 8175200
  *      8192850 8182765 8220217
@@ -109,7 +110,8 @@
                 "<section class=\"description\">\n<hr>\n"
                 + "<pre>public abstract class <span class=\"typeNameLabel\">"
                 + "DocumentedNonGenericChild</span>\n"
-                + "extends java.lang.Object</pre>\n"
+                + "extends java.lang.Object\n"
+                + "implements java.lang.IdentityObject</pre>\n"
                 + "</section>");
 
         checkOutput("pkg2/DocumentedNonGenericChild.html", true,
--- a/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testModules/TestModules.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363
  *      8168766 8168688 8162674 8160196 8175799 8174974 8176778 8177562 8175218
--- a/test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug      4789689 4905985 4927164 4827184 4993906 5004549 7025314 7010344 8025633 8026567 8162363
  *           8175200 8186332 8182765 8196202 8187288 8173730 8215307
--- a/test/langtools/jdk/javadoc/doclet/testOptions/TestOptions.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testOptions/TestOptions.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug      4749567 8071982 8175200 8186332 8185371 8182765 8217034
  * @summary  Test the output for -header, -footer, -nooverview, -nodeprecatedlist, -nonavbar, -notree,
--- a/test/langtools/jdk/javadoc/doclet/testPrivateClasses/TestPrivateClasses.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testPrivateClasses/TestPrivateClasses.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug      4780441 4874845 4978816 8014017 8016328 8025633 8026567 8175200 8182765
  * @summary  Make sure that when the -private flag is not used, members
--- a/test/langtools/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug      8005091 8009686 8025633 8026567 6469562 8071982 8071984 8162363 8175200 8186332 8182765
  *           8187288
--- a/test/langtools/jdk/javadoc/doclet/testUserTaglet/TestUserTaglet.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/javadoc/doclet/testUserTaglet/TestUserTaglet.java	Tue Jan 28 14:44:22 2020 +0530
@@ -53,7 +53,7 @@
         // derived from the context information available to the taglet.
         checkOutput("pkg/C.html", true,
             "<li>Element: CLASS C",
-            "<li>Element supertypes: [java.lang.Object]",
+            "<li>Element supertypes: [java.lang.Object, java.lang.IdentityObject]",
             "<li>Doclet: class jdk.javadoc.doclet.StandardDoclet"
         );
     }
--- a/test/langtools/jdk/jshell/InaccessibleExpressionTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/jshell/InaccessibleExpressionTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test 8190939 8191842
  * @summary test expressions whose type is inaccessible
  * @modules jdk.compiler/com.sun.tools.javac.api
--- a/test/langtools/jdk/jshell/ToolBasicTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/jshell/ToolBasicTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8143037 8142447 8144095 8140265 8144906 8146138 8147887 8147886 8148316 8148317 8143955 8157953 8080347 8154714 8166649 8167643 8170162 8172102 8165405 8174796 8174797 8175304 8167554 8180508 8166232 8196133 8199912 8211694 8223688
  * @summary Tests for Basic tests for REPL tool
--- a/test/langtools/jdk/jshell/ToolLocalSimpleTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/jshell/ToolLocalSimpleTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8168615 8172102
  * @summary Test all the ToolSimpleTest tests, but in local execution. Verify --execution flag
--- a/test/langtools/jdk/jshell/ToolSimpleTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/jshell/ToolSimpleTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8153716 8143955 8151754 8150382 8153920 8156910 8131024 8160089 8153897 8167128 8154513 8170015 8170368 8172102 8172103  8165405 8173073 8173848 8174041 8173916 8174028 8174262 8174797 8177079 8180508 8177466 8172154 8192979 8191842 8198573 8198801 8210596 8210959 8215099 8199623
  * @summary Simple jshell tool tests
--- a/test/langtools/jdk/jshell/TypeNameTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/jshell/TypeNameTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8144903 8171981 8191802 8191842
  * @summary Tests for determining the type from the expression
--- a/test/langtools/jdk/jshell/VariablesTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/jdk/jshell/VariablesTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8144903 8177466 8191842 8211694 8213725
  * @summary Tests for EvaluationState.variables
--- a/test/langtools/tools/javac/T8187978/FilterOutCandidatesForDiagnosticsTest.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/T8187978/FilterOutCandidatesForDiagnosticsTest.out	Tue Jan 28 14:44:22 2020 +0530
@@ -1,2 +1,2 @@
-FilterOutCandidatesForDiagnosticsTest.java:12:64: compiler.err.cant.apply.symbols: kindname.method, add, java.lang.String,{(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc,java.lang.Object[],int), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inconvertible.types: java.lang.String, compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc))),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(int,compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc), (compiler.misc.arg.length.mismatch))}
+FilterOutCandidatesForDiagnosticsTest.java:12:64: compiler.err.cant.apply.symbols: kindname.method, add, java.lang.String,{(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc,java.lang.Object[],int), (compiler.misc.arg.length.mismatch)),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc), (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inconvertible.types: java.lang.String, compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc))),(compiler.misc.inapplicable.method: kindname.method, java.util.ArrayList, add(int,compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc), (compiler.misc.arg.length.mismatch))}
 1 error
--- a/test/langtools/tools/javac/annotations/typeAnnotations/classfile/AnnotatedExtendsTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/classfile/AnnotatedExtendsTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -59,7 +59,8 @@
                 .classes(classPath.toString())
                 .run()
                 .getOutput(Task.OutputKind.DIRECT);
-        if (!javapOut.contains("0: #22(): CLASS_EXTENDS, type_index=65535"))
+        if (!javapOut.contains("0: #24(): CLASS_EXTENDS, type_index=65535") ||
+            !javapOut.contains("#24 = Utf8               LAnnotatedExtendsTest$TA;"))
             throw new AssertionError("Expected output missing: " + javapOut);
     }
 }
\ No newline at end of file
--- a/test/langtools/tools/javac/annotations/typeAnnotations/classfile/BridgeShouldHaveNoInteriorAnnotationsTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/classfile/BridgeShouldHaveNoInteriorAnnotationsTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -74,14 +74,15 @@
     // Expected output can't be directly encoded into NestedLambdasCastedTest !!!
     static class OutputExpectedOnceHolder {
         public String[] outputs = {
-            "0: #120(): CAST, offset=1, type_index=0, location=[TYPE_ARGUMENT(0)]",
-            "1: #120(): LOCAL_VARIABLE, {start_pc=5, length=2, index=1}, location=[TYPE_ARGUMENT(0)]",
+            "0: #123(): CAST, offset=1, type_index=0, location=[TYPE_ARGUMENT(0)]",
+            "1: #123(): LOCAL_VARIABLE, {start_pc=5, length=2, index=1}, location=[TYPE_ARGUMENT(0)]",
+            "#123 = Utf8               LBridgeShouldHaveNoInteriorAnnotationsTest$NonNull;",
         };
     }
 
     static class OutputExpectedTwiceHolder {
         public String[] outputs = {
-            "0: #120(): METHOD_RETURN, location=[TYPE_ARGUMENT(0)]",
+            "0: #123(): METHOD_RETURN, location=[TYPE_ARGUMENT(0)]",
         };
     }
 
@@ -98,13 +99,13 @@
         for (String s : holder.outputs) {
             String newOutput = javapOut.replace(s, "");
             if (((javapOut.length() - newOutput.length()) / s.length()) != 1)
-                throw new AssertionError("Interior annotations carried over to bridge ?");
+                throw new AssertionError("Interior annotations carried over to bridge ?" + javapOut);
         }
         OutputExpectedTwiceHolder holder2 = new OutputExpectedTwiceHolder();
         for (String s : holder2.outputs) {
             String newOutput = javapOut.replace(s, "");
             if (((javapOut.length() - newOutput.length()) / s.length()) != 2)
-                throw new AssertionError("Exterior annotations not properly carried over to bridge");
+                throw new AssertionError("Exterior annotations not properly carried over to bridge" + javapOut);
         }
     }
 }
--- a/test/langtools/tools/javac/annotations/typeAnnotations/classfile/NestedLambdasCastedTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/annotations/typeAnnotations/classfile/NestedLambdasCastedTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -53,10 +53,14 @@
                       "private static strictfp void lambda$main$2();",
                       "private static strictfp void lambda$main$1();",
                       "private static strictfp void lambda$main$0();",
-                      "0: #111(#112=s#113): CAST, offset=5, type_index=0",
-                      "0: #111(#112=s#119): CAST, offset=5, type_index=0",
-                      "0: #111(#112=s#122): CAST, offset=5, type_index=0",
-                      "0: #111(#112=s#125): CAST, offset=5, type_index=0"
+                      "0: #115(#116=s#117): CAST, offset=5, type_index=0",
+                      "0: #115(#116=s#123): CAST, offset=5, type_index=0",
+                      "0: #115(#116=s#126): CAST, offset=5, type_index=0",
+                      "0: #115(#116=s#129): CAST, offset=5, type_index=0",
+                      "#117 = Utf8               1",
+                      "#123 = Utf8               2",
+                      "#126 = Utf8               3",
+                      "#129 = Utf8               4"
         };
     }
 
@@ -84,7 +88,7 @@
         ExpectedOutputHolder holder = new ExpectedOutputHolder();
         for (String s : holder.outputs) {
             if (!javapOut.contains(s))
-                throw new AssertionError("Expected type annotation on LOCAL_VARIABLE missing");
+                throw new AssertionError("Expected type annotation on LOCAL_VARIABLE missing" + javapOut);
         }
     }
 }
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/ConstructorTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/ConstructorTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -37,7 +37,7 @@
 import java.lang.ref.ReferenceQueue;
 import java.util.*;
 
-@ExpectedSignature(descriptor = "ConstructorTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;")
+@ExpectedSignature(descriptor = "ConstructorTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
 public class ConstructorTest<T> {
 
     @ExpectedSignature(descriptor = "<init>(java.lang.Object, boolean)", signature = "(TT;Z)V")
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/EnumTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/EnumTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -34,7 +34,7 @@
  * @run main Driver EnumTest
  */
 
-@ExpectedSignature(descriptor = "EnumTest", signature = "Ljava/lang/Enum<LEnumTest;>;")
+@ExpectedSignature(descriptor = "EnumTest", signature = "Ljava/lang/Enum<LEnumTest;>;Ljava/lang/IdentityObject;")
 public enum EnumTest {;
     // see 8026480
     @ExpectedSignature(descriptor = "<init>(java.lang.String, int)", signature = "()V")
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/ExceptionTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/ExceptionTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -38,7 +38,7 @@
 import java.io.IOException;
 
 @ExpectedSignature(descriptor = "ExceptionTest",
-        signature = "<Exc:Ljava/lang/RuntimeException;:Ljava/lang/Runnable;>Ljava/lang/Object;")
+        signature = "<Exc:Ljava/lang/RuntimeException;:Ljava/lang/Runnable;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
 public class ExceptionTest<Exc extends RuntimeException & Runnable> {
 
     @ExpectedSignature(descriptor = "<init>()", signature = "<E:Ljava/lang/Exception;>()V^TE;")
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/FieldTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/FieldTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -38,7 +38,7 @@
 import java.util.List;
 import java.util.Map;
 
-@ExpectedSignature(descriptor = "FieldTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;")
+@ExpectedSignature(descriptor = "FieldTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
 public class FieldTest<T> {
 
     @ExpectedSignature(descriptor = "typeInList", signature = "Ljava/util/List<TT;>;")
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/InnerClassTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/InnerClassTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -41,12 +41,12 @@
 import java.util.concurrent.Callable;
 
 @ExpectedSignature(descriptor = "InnerClassTest",
-        signature = "<T:Ljava/util/ArrayList<TT;>;:Ljava/lang/Runnable;>Ljava/lang/Object;")
+        signature = "<T:Ljava/util/ArrayList<TT;>;:Ljava/lang/Runnable;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
 @ExpectedSignature(descriptor = "InnerClassTest$1",
-        signature = "LInnerClassTest$1Local1;", isAnonymous = true)
+        signature = "LInnerClassTest$1Local1;Ljava/lang/IdentityObject;", isAnonymous = true)
 @ExpectedSignature(descriptor = "InnerClassTest$2",
         signature = "LInnerClassTest$1Local2<Ljava/util/ArrayList<TT;>;" +
-                "Ljava/util/Map<Ljava/util/ArrayList<TT;>;Ljava/util/ArrayList<TT;>;>;>;", isAnonymous = true)
+                "Ljava/util/Map<Ljava/util/ArrayList<TT;>;Ljava/util/ArrayList<TT;>;>;>;Ljava/lang/IdentityObject;", isAnonymous = true)
 public class InnerClassTest<T extends ArrayList<T> & Runnable> {
 
     {
@@ -63,7 +63,7 @@
         }
 
         @ExpectedSignature(descriptor = "InnerClassTest$1Local2",
-                signature = "<T:Ljava/lang/Object;U::Ljava/util/Map<+TT;-TT;>;>Ljava/lang/Object;")
+                signature = "<T:Ljava/lang/Object;U::Ljava/util/Map<+TT;-TT;>;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
         class Local2<T, U extends Map<? extends T, ? super T>> {
             // no Signature attribute
             Local2() {
@@ -83,7 +83,7 @@
 
         @ExpectedSignature(descriptor = "InnerClassTest$1Local3",
                 signature = "LInnerClassTest$1Local2<Ljava/util/ArrayList<TT;>;" +
-                        "Ljava/util/Map<Ljava/util/ArrayList<TT;>;Ljava/util/ArrayList<TT;>;>;>;")
+                        "Ljava/util/Map<Ljava/util/ArrayList<TT;>;Ljava/util/ArrayList<TT;>;>;>;Ljava/lang/IdentityObject;")
         class Local3 extends Local2<ArrayList<T>, Map<ArrayList<T>, ArrayList<T>>> {
         }
 
@@ -100,7 +100,7 @@
     }
 
     @ExpectedSignature(descriptor = "InnerClassTest$InnerClass1",
-            signature = "<E:TT;U::Ljava/util/Set<-TE;>;>Ljava/lang/Object;")
+            signature = "<E:TT;U::Ljava/util/Set<-TE;>;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
     class InnerClass1<E extends T, U extends Set<? super E>> {
         @ExpectedSignature(descriptor = "genericTypeArray", signature = "[TT;")
         T[] genericTypeArray;
@@ -191,7 +191,7 @@
     }
 
     @ExpectedSignature(descriptor = "InnerClassTest$InnerClass2",
-            signature = "LInnerClassTest<TT;>.InnerClass1<TT;Ljava/util/Set<TT;>;>;LInnerClassTest$InnerInterface<TT;>;")
+            signature = "LInnerClassTest<TT;>.InnerClass1<TT;Ljava/util/Set<TT;>;>;LInnerClassTest$InnerInterface<TT;>;Ljava/lang/IdentityObject;")
     class InnerClass2 extends InnerClass1<T, Set<T>> implements InnerInterface<T> {
 
         // no Signature attribute
@@ -241,7 +241,7 @@
 
     @ExpectedSignature(descriptor = "InnerClassTest$StaticInnerClass",
             signature = "<T:Ljava/lang/String;E::Ljava/util/Set<TT;>;>" +
-                    "Ljava/lang/Object;LInnerClassTest$InnerInterface<TE;>;")
+                    "Ljava/lang/Object;LInnerClassTest$InnerInterface<TE;>;Ljava/lang/IdentityObject;")
     static class StaticInnerClass<T extends String, E extends Set<T>> implements InnerInterface<E> {
         // no Signature attribute
         StaticInnerClass(List a) {
@@ -331,7 +331,7 @@
 
     @ExpectedSignature(descriptor = "InnerClassTest$InnerClass3",
             signature = "Ljava/lang/Object;LInnerClassTest$ExceptionHolder" +
-                    "<Ljava/lang/RuntimeException;>;Ljava/util/concurrent/Callable<Ljava/util/Map<**>;>;")
+                    "<Ljava/lang/RuntimeException;>;Ljava/util/concurrent/Callable<Ljava/util/Map<**>;>;Ljava/lang/IdentityObject;")
     public static class InnerClass3 implements  ExceptionHolder<RuntimeException>, Callable<Map<?, ?>> {
         @ExpectedSignature(descriptor = "call()", signature = "()Ljava/util/Map<**>;")
         @Override
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/MethodParameterTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/MethodParameterTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -39,7 +39,7 @@
 import java.util.Map;
 import java.util.Set;
 
-@ExpectedSignature(descriptor = "MethodParameterTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;")
+@ExpectedSignature(descriptor = "MethodParameterTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
 public class MethodParameterTest<T> {
 
     @ExpectedSignature(descriptor = "<init>(java.lang.Object, java.util.Set, java.util.ArrayList)",
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/MethodTypeBoundTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/MethodTypeBoundTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -36,7 +36,7 @@
 
 import java.util.*;
 
-@ExpectedSignature(descriptor = "MethodTypeBoundTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;")
+@ExpectedSignature(descriptor = "MethodTypeBoundTest", signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
 public class MethodTypeBoundTest<T> {
 
     @ExpectedSignature(descriptor = "method1(java.lang.String)",
@@ -76,7 +76,7 @@
     }
 
     @ExpectedSignature(descriptor = "MethodTypeBoundTest$InnerClass",
-            signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;")
+            signature = "<T:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
     class InnerClass<T> {
     }
 }
--- a/test/langtools/tools/javac/classfiles/attributes/Signature/ReturnTypeTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/classfiles/attributes/Signature/ReturnTypeTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -41,7 +41,7 @@
 import java.util.concurrent.Callable;
 
 @ExpectedSignature(descriptor = "ReturnTypeTest",
-        signature = "<T:Ljava/awt/Frame;:Ljava/lang/Runnable;:Ljava/util/concurrent/Callable<[TT;>;>Ljava/lang/Object;")
+        signature = "<T:Ljava/awt/Frame;:Ljava/lang/Runnable;:Ljava/util/concurrent/Callable<[TT;>;>Ljava/lang/Object;Ljava/lang/IdentityObject;")
 public class ReturnTypeTest<T extends Frame & Runnable & Callable<T[]>> {
 
     @ExpectedSignature(descriptor = "byteArrayReturnType(java.awt.Frame)",
--- a/test/langtools/tools/javac/diags/examples.not-yet.txt	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/diags/examples.not-yet.txt	Tue Jan 28 14:44:22 2020 +0530
@@ -209,3 +209,6 @@
 compiler.err.empty.value.not.yet
 compiler.err.this.exposed.prematurely
 compiler.warn.this.exposed.prematurely
+compiler.err.identity.type.must.not.implement.inline.object
+compiler.err.inline.type.must.not.implement.identity.object
+compiler.err.mutually.incompatible.interfaces
--- a/test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTestb.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/generics/inference/EagerReturnTypeResolution/EagerReturnTypeResolutionTestb.out	Tue Jan 28 14:44:22 2020 +0530
@@ -4,10 +4,10 @@
 EagerReturnTypeResolutionTestb.java:45:26: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<?>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:74:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:75:15: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:77:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
+EagerReturnTypeResolutionTestb.java:77:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
 EagerReturnTypeResolutionTestb.java:78:21: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:79:21: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:81:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
+EagerReturnTypeResolutionTestb.java:81:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:82:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:83:24: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.I<java.lang.Integer>,EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:85:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<?>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<?>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
@@ -17,10 +17,10 @@
 EagerReturnTypeResolutionTestb.java:90:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.I<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.I<?>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.I<?>,EagerReturnTypeResolutionTestb.I<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:91:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:92:15: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:94:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.J<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
+EagerReturnTypeResolutionTestb.java:94:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.J<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
 EagerReturnTypeResolutionTestb.java:95:21: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:96:21: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:98:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
+EagerReturnTypeResolutionTestb.java:98:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.J<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:99:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:100:24: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.J<java.lang.Integer>,EagerReturnTypeResolutionTestb.J<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:102:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.String>)
@@ -28,10 +28,10 @@
 EagerReturnTypeResolutionTestb.java:104:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.String>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.String>)
 EagerReturnTypeResolutionTestb.java:105:15: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>)
 EagerReturnTypeResolutionTestb.java:106:15: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:108:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
+EagerReturnTypeResolutionTestb.java:108:9: compiler.err.cant.apply.symbol: kindname.method, takeIString, EagerReturnTypeResolutionTestb.I<java.lang.String>, EagerReturnTypeResolutionTestb.I<compiler.misc.type.captureof: 1, ? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object))
 EagerReturnTypeResolutionTestb.java:109:21: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>)
 EagerReturnTypeResolutionTestb.java:110:21: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>,java.lang.Object)
-EagerReturnTypeResolutionTestb.java:112:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
+EagerReturnTypeResolutionTestb.java:112:30: compiler.err.prob.found.req: (compiler.misc.inferred.do.not.conform.to.upper.bounds: EagerReturnTypeResolutionTestb.I<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<? extends java.lang.Object&java.io.Serializable&java.lang.Comparable<?>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>&java.lang.IdentityObject&java.lang.constant.Constable&java.lang.constant.ConstantDesc>, EagerReturnTypeResolutionTestb.I<java.lang.String>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:113:24: compiler.err.cant.apply.symbol: kindname.method, eq2, java.util.List<T>,java.util.List<T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.eq.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>)
 EagerReturnTypeResolutionTestb.java:114:24: compiler.err.cant.apply.symbol: kindname.method, upper2, java.util.List<? super T>,java.util.List<? super T>, java.util.List<EagerReturnTypeResolutionTestb.J<java.lang.Integer>>,java.util.List<EagerReturnTypeResolutionTestb.K>, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.incompatible.upper.bounds: T, EagerReturnTypeResolutionTestb.K,EagerReturnTypeResolutionTestb.J<java.lang.Integer>,java.lang.Object)
 EagerReturnTypeResolutionTestb.java:174:9: compiler.err.cant.apply.symbol: kindname.method, takeLong, long, java.lang.Double, kindname.class, EagerReturnTypeResolutionTestb, (compiler.misc.no.conforming.assignment.exists: (compiler.misc.inferred.do.not.conform.to.upper.bounds: java.lang.Double, java.lang.Long,java.lang.Object))
--- a/test/langtools/tools/javac/processing/model/element/TestMissingElement/TestMissingElement.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/processing/model/element/TestMissingElement/TestMissingElement.java	Tue Jan 28 14:44:22 2020 +0530
@@ -29,7 +29,7 @@
  * @modules jdk.compiler/com.sun.tools.javac.processing
  *          jdk.compiler/com.sun.tools.javac.util
  * @build JavacTestingAbstractProcessor TestMissingElement
- * @compile/fail/ref=TestMissingElement.ref -XDaccessInternalAPI -proc:only -XprintRounds -XDrawDiagnostics -processor TestMissingElement InvalidSource.java
+ * @compile/fail/ref=TestMissingElement.ref -XDnoTopInterfaceInjection -XDaccessInternalAPI -proc:only -XprintRounds -XDrawDiagnostics -processor TestMissingElement InvalidSource.java
  */
 
 import java.io.PrintWriter;
--- a/test/langtools/tools/javac/processing/model/util/printing/module-info.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/processing/model/util/printing/module-info.out	Tue Jan 28 14:44:22 2020 +0530
@@ -1,13 +1,13 @@
 package p;
 
-public class P {
+public class P implements java.lang.IdentityObject {
 
-  public static class P1 extends p.P {
+  public static class P1 extends p.P implements java.lang.IdentityObject {
 
     public P1();
   }
 
-  public static class P2 extends p.P {
+  public static class P2 extends p.P implements java.lang.IdentityObject {
 
     public P2();
   }
--- a/test/langtools/tools/javac/processing/options/XprintDocComments.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/processing/options/XprintDocComments.out	Tue Jan 28 14:44:22 2020 +0530
@@ -2,7 +2,7 @@
 /**
  * CLASS XprintDocComments
  */
-class XPrintDocComments {
+class XPrintDocComments implements java.lang.IdentityObject {
 
   XPrintDocComments();
   /**
--- a/test/langtools/tools/javac/processing/rounds/GenerateAnonymousClass.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/processing/rounds/GenerateAnonymousClass.out	Tue Jan 28 14:44:22 2020 +0530
@@ -1,7 +1,7 @@
 round: 1
 round: 2
 
-public class T {
+public class T implements java.lang.IdentityObject {
 
   public T();
 
@@ -9,7 +9,7 @@
 }
 round: 3
 
-public class T {
+public class T implements java.lang.IdentityObject {
 
   public T();
 
--- a/test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_1.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_1.out	Tue Jan 28 14:44:22 2020 +0530
@@ -2,7 +2,7 @@
 round: 2
 
 @java.lang.Deprecated
-public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -12,7 +12,7 @@
 }
 
 @java.lang.Deprecated
-public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedClass();
 
@@ -23,7 +23,7 @@
 round: 3
 
 @java.lang.Deprecated
-public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -33,7 +33,7 @@
 }
 
 @java.lang.Deprecated
-public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedClass();
 
--- a/test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_2.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_2.out	Tue Jan 28 14:44:22 2020 +0530
@@ -1,7 +1,7 @@
 round: 1
 
 @java.lang.Deprecated
-public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -11,7 +11,7 @@
 }
 
 @java.lang.Deprecated
-public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedClass();
 
@@ -22,7 +22,7 @@
 round: 2
 
 @javax.annotation.processing.SupportedAnnotationTypes({"*"})
-public abstract class GeneratedSource<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence {
+public abstract class GeneratedSource<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -30,7 +30,7 @@
 }
 
 @javax.annotation.processing.SupportedAnnotationTypes({"*"})
-public abstract class GeneratedClass<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence {
+public abstract class GeneratedClass<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence, java.lang.IdentityObject {
 
   public GeneratedClass();
 
@@ -39,7 +39,7 @@
 round: 3
 
 @javax.annotation.processing.SupportedAnnotationTypes({"*"})
-public abstract class GeneratedSource<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence {
+public abstract class GeneratedSource<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -47,7 +47,7 @@
 }
 
 @javax.annotation.processing.SupportedAnnotationTypes({"*"})
-public abstract class GeneratedClass<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence {
+public abstract class GeneratedClass<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence, java.lang.IdentityObject {
 
   public GeneratedClass();
 
--- a/test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_3.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/processing/rounds/OverwriteBetweenCompilations_3.out	Tue Jan 28 14:44:22 2020 +0530
@@ -1,7 +1,7 @@
 round: 1
 
 @javax.annotation.processing.SupportedAnnotationTypes({"*"})
-public abstract class GeneratedSource<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence {
+public abstract class GeneratedSource<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -9,7 +9,7 @@
 }
 
 @javax.annotation.processing.SupportedAnnotationTypes({"*"})
-public abstract class GeneratedClass<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence {
+public abstract class GeneratedClass<E> extends java.util.LinkedList<java.lang.Number> implements java.lang.Runnable, java.lang.CharSequence, java.lang.IdentityObject {
 
   public GeneratedClass();
 
@@ -18,7 +18,7 @@
 round: 2
 
 @java.lang.Deprecated
-public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -28,7 +28,7 @@
 }
 
 @java.lang.Deprecated
-public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedClass();
 
@@ -39,7 +39,7 @@
 round: 3
 
 @java.lang.Deprecated
-public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedSource<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedSource();
 
@@ -49,7 +49,7 @@
 }
 
 @java.lang.Deprecated
-public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable {
+public class GeneratedClass<T> extends java.util.ArrayList<java.lang.String> implements java.lang.Runnable, java.lang.IdentityObject {
 
   public GeneratedClass();
 
--- a/test/langtools/tools/javac/valhalla/lworld-values/CheckFinal.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/valhalla/lworld-values/CheckFinal.out	Tue Jan 28 14:44:22 2020 +0530
@@ -2,4 +2,5 @@
 CheckFinal.java:15:13: compiler.err.cant.assign.val.to.final.var: fe
 CheckFinal.java:17:13: compiler.err.cant.assign.val.to.final.var: xsf
 CheckFinal.java:19:29: compiler.err.cant.inherit.from.final: CheckFinal
-4 errors
+CheckFinal.java:19:42: compiler.err.empty.value.not.yet
+5 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/valhalla/lworld-values/TopInterfaceNegativeTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -0,0 +1,36 @@
+/**
+ * @test /nodynamiccopyright/
+ * @bug 8237069
+ * @summary Introduce and wire-in the new top interfaces
+ * @compile/fail/ref=TopInterfaceNegativeTest.out -XDrawDiagnostics TopInterfaceNegativeTest.java
+ */
+
+public class TopInterfaceNegativeTest  {
+
+    interface ID extends IdentityObject {}
+    interface II extends InlineObject {}
+
+    interface IID0 extends IdentityObject, IdentityObject {} // Error.
+    interface IID1 extends IdentityObject, InlineObject {} // Error.
+    interface IID2 extends IdentityObject, II {} // Error.
+    interface IID3 extends IdentityObject, ID {} // OK.
+    interface IID4 extends InlineObject, II {} // OK.
+    interface IID5 extends ID, II {} // Error
+
+    static class C1 implements InlineObject {} // Error
+    static class C2 implements II {} // Error
+    static class C3 implements IdentityObject {} // Ok
+    static class C4 implements ID {} // Ok
+    static class C5 implements IdentityObject, IdentityObject {} // Error.
+    static class C6 implements IdentityObject, ID {} // OK
+    static class C7 implements II, ID {} // Error
+
+    static inline class V1 implements IdentityObject {} // error.
+    static inline class V2 implements InlineObject {} // Ok.
+    static inline class V3 implements InlineObject, InlineObject  {} // error.
+
+    void foo(V2 v) {
+        if (v instanceof IdentityObject)
+            throw new AssertionError("Expected inline object but found identity object");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/valhalla/lworld-values/TopInterfaceNegativeTest.out	Tue Jan 28 14:44:22 2020 +0530
@@ -0,0 +1,14 @@
+TopInterfaceNegativeTest.java:13:44: compiler.err.repeated.interface
+TopInterfaceNegativeTest.java:24:48: compiler.err.repeated.interface
+TopInterfaceNegativeTest.java:30:53: compiler.err.repeated.interface
+TopInterfaceNegativeTest.java:14:5: compiler.err.mutually.incompatible.interfaces: TopInterfaceNegativeTest.IID1
+TopInterfaceNegativeTest.java:15:5: compiler.err.mutually.incompatible.interfaces: TopInterfaceNegativeTest.IID2
+TopInterfaceNegativeTest.java:18:5: compiler.err.mutually.incompatible.interfaces: TopInterfaceNegativeTest.IID5
+TopInterfaceNegativeTest.java:20:12: compiler.err.identity.type.must.not.implement.inline.object: TopInterfaceNegativeTest.C1
+TopInterfaceNegativeTest.java:21:12: compiler.err.identity.type.must.not.implement.inline.object: TopInterfaceNegativeTest.C2
+TopInterfaceNegativeTest.java:26:12: compiler.err.identity.type.must.not.implement.inline.object: TopInterfaceNegativeTest.C7
+TopInterfaceNegativeTest.java:28:19: compiler.err.inline.type.must.not.implement.identity.object: TopInterfaceNegativeTest.V1
+TopInterfaceNegativeTest.java:29:19: compiler.err.empty.value.not.yet
+TopInterfaceNegativeTest.java:30:19: compiler.err.empty.value.not.yet
+TopInterfaceNegativeTest.java:33:13: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: TopInterfaceNegativeTest.V2, java.lang.IdentityObject)
+13 errors
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/langtools/tools/javac/valhalla/lworld-values/TopInterfaceTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2020, 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 8237069
+ * @summary Introduce and wire-in the new top interfaces
+ * @run main/othervm TopInterfaceTest
+ */
+
+public class TopInterfaceTest  {
+
+    static class C {}
+
+    static inline class V {
+        int x = 42;
+    }
+
+    interface I {
+    }
+
+    @interface A {
+    }
+
+    public static void main(String args[]) {
+
+        V inln_o = new V();
+        C id_o = new C();
+
+        // Check that InlineObject is injected as a super interface for inline types.
+        Class<?> [] ca = inln_o.getClass().getInterfaces();
+        if (ca.length != 1)
+            throw new AssertionError("Found wrong super interfaces");
+        if (!ca[0].getCanonicalName().equals("java.lang.InlineObject"))
+            throw new AssertionError("Found wrong super interfaces");
+        if (!(inln_o instanceof InlineObject)) // really really make sure...
+            throw new AssertionError("Expected inline Object");
+
+        // Check that no injection has happened for jlO itself.
+        Class<?> jlo = inln_o.getClass().getSuperclass();
+        if (!jlo.getCanonicalName().equals("java.lang.Object"))
+            throw new AssertionError("Wrong super type for value type");
+        if (jlo.getInterfaces().length != 0)
+            throw new AssertionError("Wrong number of super interfaces for jlO");
+
+        if (!(id_o instanceof IdentityObject))
+            throw new AssertionError("Expected identity Object");
+        if (id_o instanceof InlineObject)
+            throw new AssertionError("Expected identity object, found inline object");
+
+        // Check that no super interface injection has happened for interfaces.
+        if (I.class.getInterfaces().length != 0)
+            throw new AssertionError("Found extraneous super interfaces");
+
+        // Check that no super interface injection has happened for annotation types.
+        ca = A.class.getInterfaces();
+        if (ca.length != 1)
+            throw new AssertionError("Found extraneous super interfaces");
+        if (!ca[0].getCanonicalName().equals("java.lang.annotation.Annotation"))
+            throw new AssertionError("Found wrong super interfaces");
+    }
+}
--- a/test/langtools/tools/javac/valhalla/lworld-values/ValueModifierTest.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javac/valhalla/lworld-values/ValueModifierTest.out	Tue Jan 28 14:44:22 2020 +0530
@@ -1,6 +1,7 @@
 ValueModifierTest.java:11:28: compiler.err.empty.value.not.yet
 ValueModifierTest.java:14:16: compiler.err.empty.value.not.yet
 ValueModifierTest.java:15:13: compiler.err.cant.inherit.from.final: value
+ValueModifierTest.java:15:21: compiler.err.empty.value.not.yet
 ValueModifierTest.java:16:28: compiler.err.value.may.not.extend
 ValueModifierTest.java:16:20: compiler.err.cant.inherit.from.final: value
-5 errors
+6 errors
--- a/test/langtools/tools/javap/8006334/JavapTaskCtorFailWithNPE.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/8006334/JavapTaskCtorFailWithNPE.java	Tue Jan 28 14:44:22 2020 +0530
@@ -47,7 +47,7 @@
     //we will also check the output just to confirm that we get the expected one
     private static final String expOutput =
         "Compiled from \"JavapTaskCtorFailWithNPE.java\"\n" +
-        "public class JavapTaskCtorFailWithNPE {\n" +
+        "public class JavapTaskCtorFailWithNPE implements java.lang.IdentityObject {\n" +
         "  public JavapTaskCtorFailWithNPE();\n" +
         "  public static void main(java.lang.String[]);\n" +
         "}\n";
--- a/test/langtools/tools/javap/AnnoTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/AnnoTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -49,50 +49,50 @@
 
         expect(out,
                 "RuntimeVisibleAnnotations:\n" +
-                "  0: #21(#22=B#23)\n" +
+                "  0: #23(#24=B#25)\n" +
                 "    AnnoTest$ByteAnno(\n" +
                 "      value=(byte) 42\n" +
                 "    )\n" +
-                "  1: #24(#22=S#25)\n" +
+                "  1: #26(#24=S#27)\n" +
                 "    AnnoTest$ShortAnno(\n" +
                 "      value=(short) 3\n" +
                 "    )");
         expect(out,
                 "RuntimeInvisibleAnnotations:\n" +
-                "  0: #27(#22=[J#28,J#30,J#32,J#34,J#36])\n" +
+                "  0: #29(#24=[J#30,J#32,J#34,J#36,J#38])\n" +
                 "    AnnoTest$ArrayAnno(\n" +
                 "      value=[1l,2l,3l,4l,5l]\n" +
                 "    )\n" +
-                "  1: #38(#22=Z#39)\n" +
+                "  1: #40(#24=Z#41)\n" +
                 "    AnnoTest$BooleanAnno(\n" +
                 "      value=false\n" +
                 "    )\n" +
-                "  2: #40(#41=c#42)\n" +
+                "  2: #42(#43=c#44)\n" +
                 "    AnnoTest$ClassAnno(\n" +
                 "      type=class Ljava/lang/Object;\n" +
                 "    )\n" +
-                "  3: #43(#44=e#45.#46)\n" +
+                "  3: #45(#46=e#47.#48)\n" +
                 "    AnnoTest$EnumAnno(\n" +
                 "      kind=Ljavax/lang/model/element/ElementKind;.PACKAGE\n" +
                 "    )\n" +
-                "  4: #47(#22=I#48)\n" +
+                "  4: #49(#24=I#50)\n" +
                 "    AnnoTest$IntAnno(\n" +
                 "      value=2\n" +
                 "    )\n" +
-                "  5: #49()\n" +
+                "  5: #51()\n" +
                 "    AnnoTest$IntDefaultAnno\n" +
-                "  6: #50(#51=s#52)\n" +
+                "  6: #52(#53=s#54)\n" +
                 "    AnnoTest$NameAnno(\n" +
                 "      name=\"NAME\"\n" +
                 "    )\n" +
-                "  7: #53(#54=D#55,#57=F#58)\n" +
+                "  7: #55(#56=D#57,#59=F#60)\n" +
                 "    AnnoTest$MultiAnno(\n" +
                 "      d=3.14159d\n" +
                 "      f=2.71828f\n" +
                 "    )\n" +
-                "  8: #59()\n" +
+                "  8: #61()\n" +
                 "    AnnoTest$SimpleAnno\n" +
-                "  9: #60(#22=@#47(#22=I#61))\n" +
+                "  9: #62(#24=@#49(#24=I#63))\n" +
                 "    AnnoTest$AnnoAnno(\n" +
                 "      value=@AnnoTest$IntAnno(\n" +
                 "        value=5\n" +
@@ -100,7 +100,7 @@
                 "    )");
         expect(out,
                 "RuntimeInvisibleTypeAnnotations:\n" +
-                "  0: #63(): CLASS_EXTENDS, type_index=0\n" +
+                "  0: #65(): CLASS_EXTENDS, type_index=0\n" +
                 "    AnnoTest$TypeAnno");
 
         if (errors > 0)
--- a/test/langtools/tools/javap/T4880663.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/T4880663.java	Tue Jan 28 14:44:22 2020 +0530
@@ -40,7 +40,7 @@
     public void run() throws IOException {
         File javaFile = writeTestFile();
         File classFile = compileTestFile(javaFile);
-        verify(classFile, "class Test {");
+        verify(classFile, "class Test implements java.lang.IdentityObject {");
 
         if (errors > 0)
             throw new Error(errors + " found.");
--- a/test/langtools/tools/javap/TestSuperclass.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/TestSuperclass.java	Tue Jan 28 14:44:22 2020 +0530
@@ -34,6 +34,7 @@
 import java.io.StringWriter;
 import java.net.URI;
 import java.util.Arrays;
+import java.util.List;
 import javax.tools.JavaCompiler;
 import javax.tools.JavaCompiler.CompilationTask;
 import javax.tools.JavaFileObject;
@@ -112,7 +113,7 @@
 
         JavaSource js = new JavaSource();
         System.err.println(js.getCharContent(false));
-        CompilationTask t = comp.getTask(null, fm, null, null, null, Arrays.asList(js));
+        CompilationTask t = comp.getTask(null, fm, null, List.of("-XDnoTopInterfaceInjection"), null, Arrays.asList(js));
         if (!t.call())
             throw new Error("compilation failed");
 
--- a/test/langtools/tools/javap/classfile/6888367/T6888367.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/classfile/6888367/T6888367.java	Tue Jan 28 14:44:22 2020 +0530
@@ -39,6 +39,8 @@
  * @bug 6888367
  * @summary classfile library parses signature attributes incorrectly
  * @modules jdk.jdeps/com.sun.tools.classfile
+ * @compile -XDnoTopInterfaceInjection T6888367.java
+ * @run main T6888367
  */
 
 /*
--- a/test/langtools/tools/javap/classfile/T6887895.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/classfile/T6887895.java	Tue Jan 28 14:44:22 2020 +0530
@@ -57,6 +57,7 @@
         String[] expectNames = {
             "java/lang/Object",
             "java/lang/String",
+            "java/lang/IdentityObject",
             "T6887895",
             "T6887895$Test"
         };
--- a/test/langtools/tools/javap/classfile/deps/T6907575.out	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/classfile/deps/T6907575.out	Tue Jan 28 14:44:22 2020 +0530
@@ -1,8 +1,11 @@
 p/C1
+    java/lang/IdentityObject
     java/lang/Object
     p/C2
 p/C2
+    java/lang/IdentityObject
     java/lang/Object
     p/C3
 p/C3
+    java/lang/IdentityObject
     java/lang/Object
--- a/test/langtools/tools/javap/typeAnnotations/InvisibleParameterAnnotationsTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/javap/typeAnnotations/InvisibleParameterAnnotationsTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -62,11 +62,11 @@
             "    RuntimeVisibleParameterAnnotations:\n" +
             "      parameter 0:\n" +
             "      parameter 1:\n" +
-            "        0: #14()\n" +
+            "        0: #16()\n" +
             "          Sample$VisAnno\n" +
             "    RuntimeInvisibleParameterAnnotations:\n" +
             "      parameter 0:\n" +
-            "        0: #16()\n" +
+            "        0: #18()\n" +
             "          Sample$InvisAnno\n" +
             "      parameter 1:";
 
--- a/test/langtools/tools/jdeps/APIDeps.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/jdeps/APIDeps.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8015912 8029216 8048063 8050804
  * @summary Test -apionly and -jdkinternals options
--- a/test/langtools/tools/jdeps/Basic.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/jdeps/Basic.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8003562 8005428 8015912 8027481 8048063 8068937
  * @summary Basic tests for jdeps tool
--- a/test/langtools/tools/jdeps/DotFileTest.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/jdeps/DotFileTest.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8003562
  * @summary Basic tests for jdeps -dotoutput option
--- a/test/langtools/tools/jdeps/MultiReleaseJar.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/jdeps/MultiReleaseJar.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8153654 8176333
  * @summary Tests for jdeps tool with multi-release jar files
--- a/test/langtools/tools/jdeps/jdkinternals/RemovedJDKInternals.java	Mon Jan 13 17:18:47 2020 -0800
+++ b/test/langtools/tools/jdeps/jdkinternals/RemovedJDKInternals.java	Tue Jan 28 14:44:22 2020 +0530
@@ -22,6 +22,7 @@
  */
 
 /*
+ * @ignore
  * @test
  * @bug 8153042
  * @summary Tests JDK internal APIs that have been removed.