diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-14 22:49:58 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-01-14 22:49:58 +0000 |
commit | d69affc26ace1de66e37f03bc9d9afabc1bfd1a6 (patch) | |
tree | ad1e4f95a199b5b83e6350405b779ee01410517f /libjava | |
parent | d4f68afb25de807aeec401d90926835c9662d414 (diff) |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@75889 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 13 | ||||
-rw-r--r-- | libjava/gnu/gcj/runtime/VMClassLoader.java | 24 | ||||
-rw-r--r-- | libjava/prims.cc | 21 |
3 files changed, 37 insertions, 21 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 6481570d7e1..93a8f8ba4e2 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2004-01-14 Nathan Bryant <nbryant@optonline.net> + Tom Tromey <tromey@redhat.com> + + 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. + 2004-01-14 Michael Koch <konqueror@gmx.de> * java/text/MessageFormat.java: @@ -8,7 +19,7 @@ * java/awt/EventQueue.java (isDispatchThread): Do check on top of stack. (push): Make sure push is performed at the top of the thread stack. - + 2004-01-13 Thomas Fitzsimmons <fitzsim@redhat.com> * gnu/java/awt/peer/gtk/GtkTextAreaPeer.java, diff --git a/libjava/gnu/gcj/runtime/VMClassLoader.java b/libjava/gnu/gcj/runtime/VMClassLoader.java index c5cb056570f..3eabd73d431 100644 --- a/libjava/gnu/gcj/runtime/VMClassLoader.java +++ b/libjava/gnu/gcj/runtime/VMClassLoader.java @@ -1,4 +1,4 @@ -/* Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation +/* Copyright (C) 1999, 2001, 2002, 2003, 2004 Free Software Foundation This file is part of libgcj. @@ -19,7 +19,7 @@ public final class VMClassLoader extends java.net.URLClassLoader { private VMClassLoader () { - super (init()); + super (new URL[0]); String p = System.getProperty ("gnu.gcj.runtime.VMClassLoader.library_control", ""); @@ -36,22 +36,21 @@ public final class VMClassLoader extends java.net.URLClassLoader lib_control = LIB_FULL; } - private static URL[] init() + private void init() { StringTokenizer st = new StringTokenizer (System.getProperty ("java.class.path", "."), System.getProperty ("path.separator", ":")); - java.util.Vector p = new java.util.Vector(); while (st.hasMoreElements ()) { String e = st.nextToken (); try { if (!e.endsWith (File.separator) && new File (e).isDirectory ()) - p.addElement (new URL("file", "", -1, e + File.separator)); + addURL(new URL("file", "", -1, e + File.separator)); else - p.addElement (new URL("file", "", -1, e)); + addURL(new URL("file", "", -1, e)); } catch (java.net.MalformedURLException x) { @@ -62,16 +61,12 @@ public final class VMClassLoader extends java.net.URLClassLoader // compiled into this executable may be found. try { - p.addElement (new URL("core", "", -1, "/")); + addURL(new URL("core", "", -1, "/")); } catch (java.net.MalformedURLException x) { // This should never happen. } - - URL[] urls = new URL[p.size()]; - p.copyInto (urls); - return urls; } /** This is overridden to search the internal hash table, which @@ -82,6 +77,13 @@ public final class VMClassLoader extends java.net.URLClassLoader protected native Class findClass(String name) throws java.lang.ClassNotFoundException; + // This can be package-private because we only call it from native + // code during startup. + static void initialize () + { + instance.init(); + } + // This keeps track of shared libraries we've already tried to load. private HashSet tried_libraries = new HashSet(); diff --git a/libjava/prims.cc b/libjava/prims.cc index 26e88329ed5..06791d388f3 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -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); |