re PR libgcj/12001 (_Jv_FindClass dumps core when Oracle's classes12.zip in $CLASSPATH)

PR libgcj/12001:
	* gnu/gcj/runtime/VMClassLoader.java (VMClassLoader): Pass empty
	array to superclass.
	(init): Changed interface; add URLs here.
	(initialize): New static method.
	* prims.cc (_Jv_CreateJavaVM): Initialize ClassLoader here...
	(_Jv_RunMain): ... not here.

Co-Authored-By: Tom Tromey <tromey@redhat.com>

From-SVN: r75889
This commit is contained in:
Nathan Bryant
2004-01-14 22:49:58 +00:00
committed by Tom Tromey
parent 84568e14b5
commit 092b50e2d7
3 changed files with 37 additions and 21 deletions
+12 -9
View File
@@ -1,6 +1,6 @@
// prims.cc - Code for core of runtime environment.
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation
/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation
This file is part of libgcj.
@@ -927,15 +927,24 @@ _Jv_CreateJavaVM (void* /*vm_args*/)
_Jv_InitClass (&java::lang::VMThrowable::class$);
java::lang::VMThrowable::trace_enabled = 0;
// 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$);
// Once the bootstrap loader is in place, change it into a kind of
// system loader, by having it read the class path.
gnu::gcj::runtime::VMClassLoader::initialize();
INIT_SEGV;
#ifdef HANDLE_FPE
INIT_FPE;
#endif
no_memory = new java::lang::OutOfMemoryError;
java::lang::VMThrowable::trace_enabled = 1;
#ifdef USE_LTDL
LTDL_SET_PRELOADED_SYMBOLS ();
#endif
@@ -988,12 +997,6 @@ _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);