--- old/src/java.base/share/classes/java/lang/System.java 2020-03-26 16:00:02.000000000 -0700 +++ new/src/java.base/share/classes/java/lang/System.java 2020-03-26 16:00:01.000000000 -0700 @@ -35,6 +35,8 @@ import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.lang.annotation.Annotation; +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodType; import java.lang.module.ModuleDescriptor; import java.lang.reflect.Constructor; import java.lang.reflect.Executable; @@ -2194,6 +2196,10 @@ public Class defineClass(ClassLoader loader, String name, byte[] b, ProtectionDomain pd, String source) { return ClassLoader.defineClass1(loader, name, b, 0, b.length, pd, source); } + public Class defineClass(ClassLoader loader, Class lookup, String name, byte[] b, ProtectionDomain pd, + boolean initialize, int flags, Object classData) { + return ClassLoader.defineClass0(loader, lookup, name, b, 0, b.length, pd, initialize, flags, classData); + } public Class findBootstrapClassOrNull(ClassLoader cl, String name) { return cl.findBootstrapClassOrNull(name); } @@ -2276,6 +2282,18 @@ public void setCause(Throwable t, Throwable cause) { t.setCause(cause); } + + public ProtectionDomain protectionDomain(Class c) { + return c.protectionDomain(); + } + + public MethodHandle stringConcatHelper(String name, MethodType methodType) { + return StringConcatHelper.lookupStatic(name, methodType); + } + + public Object classData(Class c) { + return c.getClassData(); + } }); } }