diff options
author | Tom Tromey <tromey@cygnus.com> | 1999-10-18 22:57:07 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-10-18 22:57:07 +0000 |
commit | 4b84737d47b7e97e11d85c13bdeb861c896a5a6a (patch) | |
tree | 5e0312d5dc7025957805d8741fe055e5009fc512 | |
parent | 35c95c5a65c1732ad9b0702656a5081e954cf967 (diff) | |
download | gcc-4b84737d47b7e97e11d85c13bdeb861c896a5a6a.zip gcc-4b84737d47b7e97e11d85c13bdeb861c896a5a6a.tar.gz gcc-4b84737d47b7e97e11d85c13bdeb861c896a5a6a.tar.bz2 |
VMClassLoader.java (getVMClassLoader): New method.
* gnu/gcj/runtime/VMClassLoader.java (getVMClassLoader): New
method.
(redirect): New static field.
* java/lang/ClassLoader.java (getSystemClassLoader): Now
native
(getVMClassLoader0): Removed.
* java/lang/natClassLoader.cc (getVMClassLoader0): Removed.
(redirect): Removed.
(getSystemClassLoader): Implemented.
From-SVN: r30075
-rw-r--r-- | libjava/ChangeLog | 12 | ||||
-rw-r--r-- | libjava/gnu/gcj/runtime/VMClassLoader.java | 11 | ||||
-rw-r--r-- | libjava/java/lang/ClassLoader.java | 8 | ||||
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 13 |
4 files changed, 30 insertions, 14 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 0e6761c..cff9145 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,15 @@ +1999-10-18 Tom Tromey <tromey@cygnus.com> + + * gnu/gcj/runtime/VMClassLoader.java (getVMClassLoader): New + method. + (redirect): New static field. + * java/lang/ClassLoader.java (getSystemClassLoader): Now + native + (getVMClassLoader0): Removed. + * java/lang/natClassLoader.cc (getVMClassLoader0): Removed. + (redirect): Removed. + (getSystemClassLoader): Implemented. + 1999-10-16 Anthony Green <green@cygnus.com> * java/lang/ClassLoader.java (getSystemResource): Use diff --git a/libjava/gnu/gcj/runtime/VMClassLoader.java b/libjava/gnu/gcj/runtime/VMClassLoader.java index bfdb3627..cbd5012 100644 --- a/libjava/gnu/gcj/runtime/VMClassLoader.java +++ b/libjava/gnu/gcj/runtime/VMClassLoader.java @@ -59,4 +59,15 @@ final class VMClassLoader extends java.net.URLClassLoader */ protected final native Class findSystemClass(String name) throws java.lang.ClassNotFoundException, java.lang.LinkageError; + + // Return the sole VMClassLoader. + private static synchronized VMClassLoader getVMClassLoader () + { + if (redirect == null) + redirect = new VMClassLoader (); + return redirect; + } + + // The only VMClassLoader that can exist. + private static VMClassLoader redirect; } diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index f04868d..dab546e 100644 --- a/libjava/java/lang/ClassLoader.java +++ b/libjava/java/lang/ClassLoader.java @@ -34,13 +34,7 @@ public abstract class ClassLoader { return parent; } - private static native ClassLoader getVMClassLoader0 (); - - static public ClassLoader getSystemClassLoader () { - if (system == null) - system = getVMClassLoader0 (); - return system; - } + public static native ClassLoader getSystemClassLoader (); /** * Creates a <code>ClassLoader</code> with no parent. diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index af4a4fa..ee5f2e7 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -48,14 +48,13 @@ extern java::lang::Class ClassLoaderClass; /////////// java.lang.ClassLoader native methods //////////// -static gnu::gcj::runtime::VMClassLoader *redirect = 0; - -java::lang::ClassLoader* -java::lang::ClassLoader::getVMClassLoader0 () +java::lang::ClassLoader * +java::lang::ClassLoader::getSystemClassLoader (void) { - if (redirect == 0) - redirect = new gnu::gcj::runtime::VMClassLoader; - return redirect; + JvSynchronize sync (&ClassLoaderClass); + if (! system) + system = gnu::gcj::runtime::VMClassLoader::getVMClassLoader (); + return system; } void |