Commit d801e245 by Tom Tromey Committed by Tom Tromey

VMClassLoader.java (loadClass): Now native.

	* java/lang/VMClassLoader.java (loadClass): Now native.
	* java/lang/natClassLoader.cc (loadClass): Implement.
	* prims.cc (_Jv_RunMain): Initialize ClassLoader.

From-SVN: r72038
parent 2a3bf9aa
2003-10-02 Tom Tromey <tromey@redhat.com>
* java/lang/VMClassLoader.java (loadClass): Now native.
* java/lang/natClassLoader.cc (loadClass): Implement.
* prims.cc (_Jv_RunMain): Initialize ClassLoader.
2003-10-02 Michael Koch <konqueror@gmx.de>
* java/net/InetAddress.java
......
......@@ -142,20 +142,14 @@ final class VMClassLoader
/**
* Helper to load a class from the bootstrap class loader.
*
* In libgcj, this does nothing, as the default system loader knows
* how to find classes that have been linked in.
*
* @param name the class name to load
* @param resolve whether to resolve it
* @return the class, loaded by the bootstrap classloader or null
* if the class wasn't found. Returning null is equivalent to throwing
* a ClassNotFoundException (but a possible performance optimization).
*/
static final Class loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
return null;
}
static final native Class loadClass(String name, boolean resolve)
throws ClassNotFoundException;
/**
* Helper to load a resource from the bootstrap class loader.
......
......@@ -136,6 +136,17 @@ java::lang::VMClassLoader::getPrimitiveClass (jchar type)
return _Jv_FindClassFromSignature (sig, NULL);
}
jclass
java::lang::VMClassLoader::loadClass(jstring name, jboolean resolve)
{
_Jv_Utf8Const *utf = _Jv_makeUtf8Const (name);
// FIXME: we culd make _Jv_FindClassFromSignature a template.
jclass klass = _Jv_FindClassInCache (utf, NULL);
if (klass && resolve)
_Jv_InitClass (klass);
return klass;
}
void
_Jv_WaitForState (jclass klass, int state)
{
......
......@@ -983,6 +983,12 @@ _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
arg_vec = JvConvertArgv (argc - 1, argv + 1);
#endif
// We have to initialize this fairly early, to avoid circular
// class initialization. In particular we want to start the
// initialization of ClassLoader before we start the
// initialization of VMClassLoader.
_Jv_InitClass (&java::lang::ClassLoader::class$);
using namespace gnu::gcj::runtime;
if (klass)
main_thread = new FirstThread (klass, arg_vec);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment