aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-14 22:49:58 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2004-01-14 22:49:58 +0000
commitd69affc26ace1de66e37f03bc9d9afabc1bfd1a6 (patch)
treead1e4f95a199b5b83e6350405b779ee01410517f /libjava
parentd4f68afb25de807aeec401d90926835c9662d414 (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/ChangeLog13
-rw-r--r--libjava/gnu/gcj/runtime/VMClassLoader.java24
-rw-r--r--libjava/prims.cc21
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);