diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-06 22:30:01 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-06 22:30:01 +0000 |
| commit | 0d423da8bb596fbe91c665220b120599d2c6bef6 (patch) | |
| tree | 28d3dbccadbb283006a3f5170554d3ca021fd926 /libjava/java/lang/ClassLoader.java | |
| parent | a5147fca1106e5c46821c63b14e8366a65ec0dff (diff) | |
| download | gcc-0d423da8bb596fbe91c665220b120599d2c6bef6.tar.gz | |
2005-04-06 Andrew Haley <aph@redhat.com>
* testsuite/libjava.lang/bytearray.java: New file.
* testsuite/libjava.lang/bytearray.out: New file.
* java/lang/ClassLoader.java (loadClassFromSig): Declare
(loadClass): Use it.
* java/lang/natClassLoader.cc (loadClassFromSig): New method.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97756 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/ClassLoader.java')
| -rw-r--r-- | libjava/java/lang/ClassLoader.java | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/libjava/java/lang/ClassLoader.java b/libjava/java/lang/ClassLoader.java index db68e60ba8d..5737ddad53a 100644 --- a/libjava/java/lang/ClassLoader.java +++ b/libjava/java/lang/ClassLoader.java @@ -260,6 +260,9 @@ public abstract class ClassLoader return loadClass(name, false); } + private native Class loadClassFromSig(String name) + throws ClassNotFoundException; + /** * Load a class using this ClassLoader or its parent, possibly resolving * it as well using <code>resolveClass()</code>. It first tries to find @@ -283,29 +286,36 @@ public abstract class ClassLoader protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException { - // Have we already loaded this class? - Class c = findLoadedClass(name); - if (c == null) + // Arrays are handled specially. + Class c; + if (name.charAt(0) == '[') + c = loadClassFromSig(name); + else { - // Can the class be loaded by a parent? - try + // Have we already loaded this class? + c = findLoadedClass(name); + if (c == null) { - if (parent == null) + // Can the class be loaded by a parent? + try { - c = VMClassLoader.loadClass(name, resolve); - if (c != null) - return c; + if (parent == null) + { + c = VMClassLoader.loadClass(name, resolve); + if (c != null) + return c; + } + else + { + return parent.loadClass(name, resolve); + } } - else + catch (ClassNotFoundException e) { - return parent.loadClass(name, resolve); } + // Still not found, we have to do it ourself. + c = findClass(name); } - catch (ClassNotFoundException e) - { - } - // Still not found, we have to do it ourself. - c = findClass(name); } if (resolve) resolveClass(c); |
