OSDN Git Service

* gnu/gcj/runtime/VMClassLoader.java (getVMClassLoader): New
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Oct 1999 22:57:07 +0000 (22:57 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 18 Oct 1999 22:57:07 +0000 (22:57 +0000)
method.
(redirect): New static field.
* java/lang/ClassLoader.java (getSystemClassLoader): Now
native
(getVMClassLoader0): Removed.
* java/lang/natClassLoader.cc (getVMClassLoader0): Removed.
(redirect): Removed.
(getSystemClassLoader): Implemented.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30075 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/gnu/gcj/runtime/VMClassLoader.java
libjava/java/lang/ClassLoader.java
libjava/java/lang/natClassLoader.cc

index 0e6761c..cff9145 100644 (file)
@@ -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
index bfdb362..cbd5012 100644 (file)
@@ -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;
 }
index f04868d..dab546e 100644 (file)
@@ -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.
index af4a4fa..ee5f2e7 100644 (file)
@@ -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