bytearray.java: New file.

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.

From-SVN: r97756
This commit is contained in:
Andrew Haley 2005-04-06 22:30:01 +00:00 committed by Tom Tromey
parent 3425638af5
commit 58bf803e6c
5 changed files with 57 additions and 16 deletions

View file

@ -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);