From b149e89e77531944d9575190084dee9816391bc2 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 4 May 2006 15:29:22 +0000 Subject: Class.h (JV_STATE_LOADING): Added comment. * java/lang/Class.h (JV_STATE_LOADING): Added comment. * Makefile.in: Rebuilt. * Makefile.am (nat_source_files): Added natSystemClassLoader.cc. * gnu/gcj/runtime/natSystemClassLoader.cc: New file. * gnu/gcj/runtime/SystemClassLoader.java (nativeClasses): New field. (loadedClasses): Removed. (findClass): Declare. (addClass): Add to nativeClasses, not loadedClasses. From-SVN: r113530 --- libjava/gnu/gcj/runtime/SystemClassLoader.java | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'libjava/gnu/gcj/runtime/SystemClassLoader.java') diff --git a/libjava/gnu/gcj/runtime/SystemClassLoader.java b/libjava/gnu/gcj/runtime/SystemClassLoader.java index d01221167a7..7470542cb7c 100644 --- a/libjava/gnu/gcj/runtime/SystemClassLoader.java +++ b/libjava/gnu/gcj/runtime/SystemClassLoader.java @@ -22,7 +22,9 @@ public final class SystemClassLoader extends URLClassLoader super(new URL[0], parent); } - private HashMap loadedClasses; + // This holds all the "native" classes linked into the executable + // and registered with this loader. + private HashMap nativeClasses = new HashMap(); // This is called to register a native class which was linked into // the application but which is registered with the system class @@ -42,23 +44,11 @@ public final class SystemClassLoader extends URLClassLoader } // Use reflection to access the package-private "loadedClasses" field. - if (this.loadedClasses == null) - { - try - { - Class cl = java.lang.ClassLoader.class; - Field lcField = cl.getDeclaredField("loadedClasses"); - lcField.setAccessible(true); - this.loadedClasses = (HashMap) lcField.get(this); - } - catch (Exception x) - { - throw new RuntimeException(x); - } - } - this.loadedClasses.put(className, klass); + nativeClasses.put(className, klass); } + protected native Class findClass(String name); + // We add the URLs to the system class loader late. The reason for // this is that during bootstrap we don't want to parse URLs or // create URL connections, since that will result in circularities -- cgit v1.2.3