aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natRuntime.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/java/lang/natRuntime.cc')
-rw-r--r--libjava/java/lang/natRuntime.cc55
1 files changed, 55 insertions, 0 deletions
diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc
index d89ab18bd9c..f8b050c4d58 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 ();