--- old/src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java 2019-12-03 19:37:30.000000000 -0800 +++ new/src/java.base/share/classes/jdk/internal/access/JavaLangAccess.java 2019-12-03 19:37:30.000000000 -0800 @@ -26,6 +26,8 @@ package jdk.internal.access; import java.lang.annotation.Annotation; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodType; import java.lang.module.ModuleDescriptor; import java.lang.reflect.Executable; import java.lang.reflect.Method; @@ -148,6 +150,14 @@ Class defineClass(ClassLoader cl, String name, byte[] b, ProtectionDomain pd, String source); /** + * Defines a class with the given name to a class loader with + * the given flags and class data. + * + * @see java.lang.invoke.MethodHandles.Lookup#defineClass + */ + Class defineClass(ClassLoader cl, Class lookup, String name, byte[] b, ProtectionDomain pd, boolean initialize, int flags, Object classData); + + /** * Returns a class loaded by the bootstrap class loader. */ Class findBootstrapClassOrNull(ClassLoader cl, String name); @@ -319,4 +329,14 @@ * @param library name of the library to load */ void loadLibrary(Class caller, String library); + + /** + * Get protection domain of the given Class + */ + ProtectionDomain protectionDomain(Class c); + + /** + * Get a method handle of string concat helper method + */ + MethodHandle stringConcatHelper(String name, MethodType methodType); }