< prev index next >
src/java.base/share/classes/java/lang/invoke/MethodHandleNatives.java
Print this page
rev 58565 : 8238358: Implementation of JEP 371: Hidden Classes
Reviewed-by: duke
Contributed-by: mandy.chung@oracle.com, lois.foltan@oracle.com, david.holmes@oracle.com, harold.seigel@oracle.com, serguei.spitsyn@oracle.com, alex.buckley@oracle.com, jamsheed.c.m@oracle.com
*** 23,32 ****
--- 23,34 ----
* questions.
*/
package java.lang.invoke;
+ import jdk.internal.access.JavaLangAccess;
+ import jdk.internal.access.SharedSecrets;
import jdk.internal.ref.CleanerFactory;
import sun.invoke.util.Wrapper;
import java.lang.invoke.MethodHandles.Lookup;
import java.lang.reflect.Field;
*** 135,144 ****
--- 137,155 ----
REF_invokeStatic = 6,
REF_invokeSpecial = 7,
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) {
return (refKind > REF_NONE && refKind < REF_LIMIT);
}
*** 657,662 ****
--- 668,682 ----
if (symbolicRefClass == definingClass) return true;
if (symbolicRef.isStatic() || symbolicRef.isPrivate()) return false;
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);
+ }
}
< prev index next >