summaryrefslogtreecommitdiff
path: root/vm
diff options
context:
space:
mode:
authorJohn Leuner <jewel@pixie.co.za>2002-12-18 10:28:28 +0000
committerJohn Leuner <jewel@pixie.co.za>2002-12-18 10:28:28 +0000
commitd732ada79b7f1531e613146658f61a069191720a (patch)
treef8d051445498a9acde9fc68aed7eed21b4710c72 /vm
parent7bd1a7bba39bb17465f85eb1b18bb44e84f2902e (diff)
downloadclasspath-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.java37
-rw-r--r--vm/reference/java/lang/reflect/Method.java2
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;