Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/ikvm-fork.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjfrijters <jfrijters>2013-02-23 12:47:55 +0400
committerjfrijters <jfrijters>2013-02-23 12:47:55 +0400
commit162e81bddafea662b342ef78a7d53995a87551ec (patch)
treef788fb29c4acd17169c2b0489d279d4ffa0862f5
parent346a9ee8442900c750291ef0a9ae4303ba6e590e (diff)
Simplified AssemblyClassLoader construction.
-rw-r--r--classpath/ikvm/internal/AssemblyClassLoader.java8
-rw-r--r--openjdk/java/lang/ClassLoader.java19
-rw-r--r--runtime/AssemblyClassLoader.cs17
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;