aboutsummaryrefslogtreecommitdiff
path: root/libjava/java
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>1999-05-05 14:19:24 +0000
committerTom Tromey <tromey@gcc.gnu.org>1999-05-05 14:19:24 +0000
commit9096b279c220a45ee1a369a46661b366db767502 (patch)
tree14b0eb7b6f562102ad5e5179e72ba9ffe7a1066c /libjava/java
parent8b04083becc6a7703c24f9802cd943da33de2a4a (diff)
downloadgcc-9096b279c220a45ee1a369a46661b366db767502.zip
gcc-9096b279c220a45ee1a369a46661b366db767502.tar.gz
gcc-9096b279c220a45ee1a369a46661b366db767502.tar.bz2
Makefile.in: Rebuilt.
* 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. From-SVN: r26785
Diffstat (limited to 'libjava/java')
-rw-r--r--libjava/java/lang/Runtime.java19
-rw-r--r--libjava/java/lang/natRuntime.cc55
2 files changed, 61 insertions, 13 deletions
diff --git a/libjava/java/lang/Runtime.java b/libjava/java/lang/Runtime.java
index baf1ae5..94e7770 100644
--- a/libjava/java/lang/Runtime.java
+++ b/libjava/java/lang/Runtime.java
@@ -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.
diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc
index d89ab18..f8b050c 100644
--- a/libjava/java/lang/natRuntime.cc
+++ b/libjava/java/lang/natRuntime.cc
@@ -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 ();