--- old/src/java.base/share/classes/java/lang/System.java 2019-12-03 19:37:21.000000000 -0800 +++ new/src/java.base/share/classes/java/lang/System.java 2019-12-03 19:37:21.000000000 -0800 @@ -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; @@ -2195,6 +2197,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); } @@ -2282,6 +2288,15 @@ assert library.indexOf(java.io.File.separatorChar) < 0; ClassLoader.loadLibrary(caller, library, false); } + + public ProtectionDomain protectionDomain(Class c) { + return c.protectionDomain(); + } + + public MethodHandle stringConcatHelper(String name, MethodType methodType) { + return StringConcatHelper.lookupStatic(name, methodType); + } + }); } }