diff options
author | jfrijters <jfrijters> | 2013-02-23 12:47:55 +0400 |
---|---|---|
committer | jfrijters <jfrijters> | 2013-02-23 12:47:55 +0400 |
commit | 162e81bddafea662b342ef78a7d53995a87551ec (patch) | |
tree | f788fb29c4acd17169c2b0489d279d4ffa0862f5 | |
parent | 346a9ee8442900c750291ef0a9ae4303ba6e590e (diff) |
Simplified AssemblyClassLoader construction.
-rw-r--r-- | classpath/ikvm/internal/AssemblyClassLoader.java | 8 | ||||
-rw-r--r-- | openjdk/java/lang/ClassLoader.java | 19 | ||||
-rw-r--r-- | runtime/AssemblyClassLoader.cs | 17 |
3 files changed, 10 insertions, 34 deletions
diff --git a/classpath/ikvm/internal/AssemblyClassLoader.java b/classpath/ikvm/internal/AssemblyClassLoader.java index 03f3901e..86a42cee 100644 --- a/classpath/ikvm/internal/AssemblyClassLoader.java +++ b/classpath/ikvm/internal/AssemblyClassLoader.java @@ -42,13 +42,15 @@ public final class AssemblyClassLoader extends ClassLoader public AssemblyClassLoader(Assembly assembly) { - this(assembly, System.getSecurityManager()); + super(null); + this.assembly = assembly; } - // this constructor is used by the runtime to avoid the security check (by passing in null as the security manager) + // this constructor is used by the runtime and calls a privileged + // ClassLoader constructor to avoid the security check AssemblyClassLoader(Assembly assembly, SecurityManager security) { - super(null, security); + super(null, null); this.assembly = assembly; } diff --git a/openjdk/java/lang/ClassLoader.java b/openjdk/java/lang/ClassLoader.java index 3477666b..8162ba81 100644 --- a/openjdk/java/lang/ClassLoader.java +++ b/openjdk/java/lang/ClassLoader.java @@ -286,7 +286,10 @@ public abstract class ClassLoader { return null; } - private ClassLoader(Void unused, ClassLoader parent) { + // [IKVM] this normally private constructor is also used by ikvm.runtime.AssemblyClassLoader + // to construct an assembly class loader without doing a security check + @ikvm.lang.Internal + protected ClassLoader(Void unused, ClassLoader parent) { if (parent != null) { parent.check(); } @@ -330,20 +333,6 @@ public abstract class ClassLoader { this(checkCreateClassLoader(), parent); } - // private constructor for use by ikvm.runtime.AssemblyClassLoader - // (to skip the security manager check) - @ikvm.lang.Internal - protected ClassLoader(ClassLoader parent, SecurityManager security) { - this(checkCreateAssemblyClassLoader(security), parent); - } - - private static Void checkCreateAssemblyClassLoader(SecurityManager security) { - if (security != null) { - security.checkCreateClassLoader(); - } - return null; - } - /** * Creates a new class loader using the <tt>ClassLoader</tt> returned by * the method {@link #getSystemClassLoader() diff --git a/runtime/AssemblyClassLoader.cs b/runtime/AssemblyClassLoader.cs index f5c17621..31f2a027 100644 --- a/runtime/AssemblyClassLoader.cs +++ b/runtime/AssemblyClassLoader.cs @@ -1213,7 +1213,7 @@ namespace IKVM.Internal } if (jclcip.javaClassLoader == null) { - jclcip.javaClassLoader = (java.lang.ClassLoader)DoPrivileged(new CreateAssemblyClassLoader(assembly)); + jclcip.javaClassLoader = new ikvm.runtime.AssemblyClassLoader(assembly, null); SetWrapperForClassLoader(jclcip.javaClassLoader, this); } // finally we publish the class loader for other threads to see @@ -1256,21 +1256,6 @@ namespace IKVM.Internal } } - internal sealed class CreateAssemblyClassLoader : java.security.PrivilegedAction - { - private Assembly assembly; - - internal CreateAssemblyClassLoader(Assembly assembly) - { - this.assembly = assembly; - } - - public object run() - { - return new ikvm.runtime.AssemblyClassLoader(assembly, null); - } - } - private sealed class CustomClassLoaderCtorCaller : java.security.PrivilegedAction { private ConstructorInfo ctor; |