aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/ClassLoader.java8
-rw-r--r--libjava/java/lang/natClassLoader.cc13
2 files changed, 7 insertions, 14 deletions
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