--- old/src/java.base/share/classes/java/lang/invoke/MethodHandleNatives.java 2020-03-26 16:00:19.000000000 -0700 +++ new/src/java.base/share/classes/java/lang/invoke/MethodHandleNatives.java 2020-03-26 16:00:18.000000000 -0700 @@ -25,6 +25,8 @@ package java.lang.invoke; +import jdk.internal.access.JavaLangAccess; +import jdk.internal.access.SharedSecrets; import jdk.internal.ref.CleanerFactory; import sun.invoke.util.Wrapper; @@ -137,6 +139,15 @@ REF_newInvokeSpecial = 8, REF_invokeInterface = 9, REF_LIMIT = 10; + + /** + * Flags for Lookup.ClassOptions + */ + static final int + NESTMATE_CLASS = 0x00000001, + HIDDEN_CLASS = 0x00000002, + STRONG_LOADER_LINK = 0x00000004, + ACCESS_VM_ANNOTATIONS = 0x00000008; } static boolean refKindIsValid(int refKind) { @@ -659,4 +670,13 @@ return (definingClass.isAssignableFrom(symbolicRefClass) || // Msym overrides Mdef symbolicRefClass.isInterface()); // Mdef implements Msym } + + private static final JavaLangAccess JLA = SharedSecrets.getJavaLangAccess(); + /* + * A convenient method for LambdaForms to get the class data of a given class. + * LambdaForms cannot use condy via MethodHandles.classData + */ + static Object classData(Class c) { + return JLA.classData(c); + } }