* Makefile.in: Rebuilt.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 5 May 1999 14:19:24 +0000 (14:19 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 5 May 1999 14:19:24 +0000 (14:19 +0000)
* Makefile.am (CLEANFILES): Don't mention $(class_files).
(clean-local): New target
* java/lang/natRuntime.cc: Include <ltdl.h> if required.
(load, loadLibrary): Now native.
(init): New method.
* java/lang/Runtime.java (load, loadLibrary): Now native.
(init): New native method.
(Runtime): Use init.
* prims.cc: Include <ltdl.h> if required.
(JvRunMain): Call LTDL_SET_PRELOADED_SYMBOLS.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26785 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/Makefile.am
libjava/Makefile.in
libjava/java/lang/Runtime.java
libjava/java/lang/natRuntime.cc
libjava/prims.cc

index 4223643..44320c8 100644 (file)
@@ -1,3 +1,18 @@
+1999-05-05  Tom Tromey  <tromey@cygnus.com>
+
+       * Makefile.in: Rebuilt.
+       * Makefile.am (CLEANFILES): Don't mention $(class_files).
+       (clean-local): New target
+
+       * java/lang/natRuntime.cc: Include <ltdl.h> if required.
+       (load, loadLibrary): Now native.
+       (init): New method.
+       * java/lang/Runtime.java (load, loadLibrary): Now native.
+       (init): New native method.
+       (Runtime): Use init.
+       * prims.cc: Include <ltdl.h> if required.
+       (JvRunMain): Call LTDL_SET_PRELOADED_SYMBOLS.
+
 1999-05-05  Gilles Zunino  <Gilles.Zunino@hei.fr>
 
        * configure.in: Switch from irix threads to posix threads
index f0319db..da9cce2 100644 (file)
@@ -120,7 +120,11 @@ libgcj.zip: $(java_source_files)
        $(ZIP) -r libgcj java gnu -n .class -i '*.class' -i '*/'
 
 MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files)
-CLEANFILES = libgcj.zip $(class_files)
+CLEANFILES = libgcj.zip
+
+clean-local:
+## We just remove every .class file that was created.
+       find . -name '*.class' -print | xargs rm -f
 
 SUFFIXES = .class .java .h
 
index 70113db..5c9bf0a 100644 (file)
@@ -163,7 +163,7 @@ libgcj_la_LIBADD = $(javao_files) $(nat_files) $(c_files) $(GCOBJS) \
 libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) -release $(VERSION)
 
 MOSTLYCLEANFILES = $(javao_files) $(nat_files) $(nat_headers) $(c_files)
-CLEANFILES = libgcj.zip $(class_files)
+CLEANFILES = libgcj.zip
 
 SUFFIXES = .class .java .h
 
@@ -1196,7 +1196,8 @@ mostlyclean: mostlyclean-recursive
 
 clean-am:  clean-hdr clean-toolexeclibLTLIBRARIES clean-compile \
                clean-libtool clean-binPROGRAMS clean-noinstPROGRAMS \
-               clean-tags clean-depend clean-generic mostlyclean-am
+               clean-tags clean-depend clean-generic mostlyclean-am \
+               clean-local
 
 clean: clean-recursive
 
@@ -1258,6 +1259,9 @@ libgcj.zip: $(java_source_files)
        -@rm -f libgcj.zip
        $(ZIP) -r libgcj java gnu -n .class -i '*.class' -i '*/'
 
+clean-local:
+       find . -name '*.class' -print | xargs rm -f
+
 .class.lo:
        $(GCJCOMPILE) -o $@ $<
 
index baf1ae5..94e7770 100644 (file)
@@ -94,18 +94,8 @@ public class Runtime
       s.checkLink(lib);
   }
 
-  public synchronized void load (String pathname)
-  {
-    checkLink (pathname);
-    // FIXME.
-    throw new UnsatisfiedLinkError ("Runtime.load not implemented");
-  }
-  public synchronized void loadLibrary (String libname)
-  {
-    checkLink (libname);
-    // FIXME.
-    throw new UnsatisfiedLinkError ("Runtime.loadLibrary not implemented");
-  }
+  public native void load (String pathname);
+  public native void loadLibrary (String libname);
 
   public native void runFinalization ();
 
@@ -122,10 +112,13 @@ public class Runtime
   public native void traceInstructions (boolean on);
   public native void traceMethodCalls (boolean on);
 
+  // A helper for the constructor.
+  private final native void init ();
+
   // The sole constructor.
   private Runtime ()
   {
-    finalize_on_exit = false;
+    init ();
   }
 
   // Private data.
index d89ab18..f8b050c 100644 (file)
@@ -15,6 +15,12 @@ details.  */
 #include <cni.h>
 #include <jvm.h>
 #include <java/lang/Runtime.h>
+#include <java/lang/UnknownError.h>
+#include <java/lang/UnsatisfiedLinkError.h>
+
+#ifdef USE_LTDL
+#include <ltdl.h>
+#endif
 
 void
 java::lang::Runtime::exit (jint status)
@@ -44,6 +50,55 @@ java::lang::Runtime::gc (void)
 }
 
 void
+java::lang::Runtime::load (jstring path)
+{
+  JvSynchronize sync (this);
+  checkLink (path);
+  using namespace java::lang;
+#ifdef USE_LTDL
+  // FIXME: make sure path is absolute.
+  lt_dlhandle h = lt_dlopen (FIXME);
+  if (h == NULL)
+    {
+      const char *msg = lt_dlerror ();
+      _Jv_Throw (new UnsatisfiedLinkError (JvNewStringLatin1 (msg)));
+    }
+#else
+  _Jv_Throw (new UnknownError
+            (JvNewStringLatin1 ("Runtime.load not implemented")));
+#endif /* USE_LTDL */
+}
+
+void
+java::lang::Runtime::loadLibrary (jstring lib)
+{
+  JvSynchronize sync (this);
+  checkLink (lib);
+  using namespace java::lang;
+#ifdef USE_LTDL
+  // FIXME: make sure path is absolute.
+  lt_dlhandle h = lt_dlopenext (FIXME);
+  if (h == NULL)
+    {
+      const char *msg = lt_dlerror ();
+      _Jv_Throw (new UnsatisfiedLinkError (JvNewStringLatin1 (msg)));
+    }
+#else
+  _Jv_Throw (new UnknownError
+            (JvNewStringLatin1 ("Runtime.loadLibrary not implemented")));
+#endif /* USE_LTDL */
+}
+
+void
+java::lang::Runtime::init (void)
+{
+  finalize_on_exit = false;
+#ifdef USE_LTDL
+  lt_dlinit ();
+#endif
+}
+
+void
 java::lang::Runtime::runFinalization (void)
 {
   _Jv_RunFinalizers ();
index 4d11cd8..4cc31cd 100644 (file)
@@ -39,6 +39,9 @@ details.  */
 #include <java/lang/reflect/Modifier.h>
 #include <java/io/PrintStream.h>
 
+#ifdef USE_LTDL
+#include <ltdl.h>
+#endif
 
 #define ObjectClass _CL_Q34java4lang6Object
 extern java::lang::Class ObjectClass;
@@ -571,6 +574,10 @@ JvRunMain (jclass klass, int argc, const char **argv)
 
   no_memory = new java::lang::OutOfMemoryError;
 
+#ifdef USE_LTDL
+  LTDL_SET_PRELOADED_SYMBOLS ();
+#endif
+
   arg_vec = JvConvertArgv (argc - 1, argv + 1);
   main_group = new java::lang::ThreadGroup (23);
   main_thread = new java::lang::FirstThread (main_group, klass, arg_vec);