diff options
author | John Leuner <jewel@pixie.co.za> | 2002-12-18 10:28:28 +0000 |
---|---|---|
committer | John Leuner <jewel@pixie.co.za> | 2002-12-18 10:28:28 +0000 |
commit | d732ada79b7f1531e613146658f61a069191720a (patch) | |
tree | f8d051445498a9acde9fc68aed7eed21b4710c72 /vm | |
parent | 7bd1a7bba39bb17465f85eb1b18bb44e84f2902e (diff) | |
download | classpath-d732ada79b7f1531e613146658f61a069191720a.tar.gz |
* vm/reference/java/lang/reflect/Method.java: Fixed javadoc
* vm/reference/java/lang/VMClassLoader.java: copied code from ClassLoader
for getSystemClassLoader
* java/lang/ClassLoader.java: Delegate getSystemClassLoader
to VMClassLoader
(From Julian Dolby)
Diffstat (limited to 'vm')
-rw-r--r-- | vm/reference/java/lang/VMClassLoader.java | 37 | ||||
-rw-r--r-- | vm/reference/java/lang/reflect/Method.java | 2 |
2 files changed, 38 insertions, 1 deletions
diff --git a/vm/reference/java/lang/VMClassLoader.java b/vm/reference/java/lang/VMClassLoader.java index 20acb8adf..77e2810c5 100644 --- a/vm/reference/java/lang/VMClassLoader.java +++ b/vm/reference/java/lang/VMClassLoader.java @@ -44,6 +44,8 @@ import java.io.IOException; import java.util.Enumeration; import java.util.Map; import java.util.HashMap; +import java.lang.reflect.Constructor; +import gnu.java.lang.SystemClassLoader; import gnu.java.util.EmptyEnumeration; @@ -295,4 +297,39 @@ final class VMClassLoader { return new HashMap(); } + + static ClassLoader getSystemClassLoader() + { + // This method is called as the initialization of systemClassLoader, + // so if there is a null value, this is the first call and we must check + // for java.system.class.loader. + String loader = System.getProperty("java.system.class.loader", + "gnu.java.lang.SystemClassLoader"); + try + { + // Give the new system class loader a null parent. + Constructor c = Class.forName(loader).getConstructor + ( new Class[] { ClassLoader.class } ); + return (ClassLoader) c.newInstance(new Object[1]); + } + catch (Exception e) + { + try + { + System.err.println("Requested system classloader " + + loader + " failed, trying " + + "gnu.java.lang.SystemClassLoader"); + e.printStackTrace(); + // Fallback to gnu.java.lang.SystemClassLoader. + return new SystemClassLoader(null); + } + catch (Exception e1) + { + throw (Error) new InternalError + ("System class loader could not be found: " + e1) + .initCause(e1); + } + } + + } } diff --git a/vm/reference/java/lang/reflect/Method.java b/vm/reference/java/lang/reflect/Method.java index 933f70169..edd315e5b 100644 --- a/vm/reference/java/lang/reflect/Method.java +++ b/vm/reference/java/lang/reflect/Method.java @@ -170,7 +170,7 @@ extends AccessibleObject implements Member // If a VM uses the Method class as their native/internal representation // then just using the following would be optimal: // - // return return this == o; + // return this == o; // if (o == null) return false; |