* Removed all Id tags.
[cacao.git] / src / native / vm / gnu / java_lang_VMRuntime.c
index b48d333187f4d1a57f18e973c75d21efe2bbc8da..d9004ca6233df4aadaa893704af4575f8bf8ceb2 100644 (file)
@@ -22,8 +22,6 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_VMRuntime.c 7374 2007-02-19 23:47:58Z twisti $
-
 */
 
 
@@ -31,7 +29,9 @@
 
 #include <assert.h>
 #include <string.h>
+#include <stdint.h>
 #include <stdlib.h>
+#include <unistd.h>
 #include <sys/utsname.h>
 
 #if defined(__DARWIN__)
 # include <mach/mach.h>
 #endif
 
-#include "vm/types.h"
-
 #include "mm/gc-common.h"
 #include "mm/memory.h"
 
 #include "native/jni.h"
+#include "native/native.h"
 
 #include "native/include/java_io_File.h"
 #include "native/include/java_lang_ClassLoader.h"
 #include "native/include/java_lang_String.h"
 #include "native/include/java_lang_Process.h"
 
+#include "native/include/java_lang_VMRuntime.h"
+
 #include "native/vm/java_lang_Runtime.h"
 
 #include "vm/builtin.h"
@@ -58,6 +59,8 @@
 #include "vm/stringlocal.h"
 #include "vm/vm.h"
 
+#include "vmcore/utf8.h"
+
 
 /* this should work on BSD */
 /*
 */
 
 
+/* native methods implemented by this file ************************************/
+
+static JNINativeMethod methods[] = {
+       { "exit",                   "(I)V",                                         (void *) (intptr_t) &Java_java_lang_VMRuntime_exit                   },
+       { "freeMemory",             "()J",                                          (void *) (intptr_t) &Java_java_lang_VMRuntime_freeMemory             },
+       { "totalMemory",            "()J",                                          (void *) (intptr_t) &Java_java_lang_VMRuntime_totalMemory            },
+       { "maxMemory",              "()J",                                          (void *) (intptr_t) &Java_java_lang_VMRuntime_maxMemory              },
+       { "gc",                     "()V",                                          (void *) (intptr_t) &Java_java_lang_VMRuntime_gc                     },
+       { "runFinalization",        "()V",                                          (void *) (intptr_t) &Java_java_lang_VMRuntime_runFinalization        },
+       { "runFinalizersOnExit",    "(Z)V",                                         (void *) (intptr_t) &Java_java_lang_VMRuntime_runFinalizersOnExit    },
+       { "runFinalizationForExit", "()V",                                          (void *) (intptr_t) &Java_java_lang_VMRuntime_runFinalizationForExit },
+       { "traceInstructions",      "(Z)V",                                         (void *) (intptr_t) &Java_java_lang_VMRuntime_traceInstructions      },
+       { "traceMethodCalls",       "(Z)V",                                         (void *) (intptr_t) &Java_java_lang_VMRuntime_traceMethodCalls       },
+       { "availableProcessors",    "()I",                                          (void *) (intptr_t) &Java_java_lang_VMRuntime_availableProcessors    },
+       { "nativeLoad",             "(Ljava/lang/String;Ljava/lang/ClassLoader;)I", (void *) (intptr_t) &Java_java_lang_VMRuntime_nativeLoad             },
+       { "mapLibraryName",         "(Ljava/lang/String;)Ljava/lang/String;",       (void *) (intptr_t) &Java_java_lang_VMRuntime_mapLibraryName         },
+};
+
+
+/* _Jv_java_lang_VMRuntime_init ************************************************
+
+   Register native functions.
+
+*******************************************************************************/
+
+void _Jv_java_lang_VMRuntime_init(void)
+{
+       utf *u;
+
+       u = utf_new_char("java/lang/VMRuntime");
+
+       native_method_register(u, methods, NATIVE_METHODS_COUNT);
+}
+
+
 /*
  * Class:     java/lang/VMRuntime
  * Method:    exit
  * Signature: (I)V
  */
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_exit(JNIEnv *env, jclass clazz, s4 status)
+JNIEXPORT void JNICALL Java_java_lang_VMRuntime_exit(JNIEnv *env, jclass clazz, int32_t status)
 {
        _Jv_java_lang_Runtime_exit(status);
 }
@@ -83,7 +121,7 @@ JNIEXPORT void JNICALL Java_java_lang_VMRuntime_exit(JNIEnv *env, jclass clazz,
  * Method:    freeMemory
  * Signature: ()J
  */
-JNIEXPORT s8 JNICALL Java_java_lang_VMRuntime_freeMemory(JNIEnv *env, jclass clazz)
+JNIEXPORT int64_t JNICALL Java_java_lang_VMRuntime_freeMemory(JNIEnv *env, jclass clazz)
 {
        return _Jv_java_lang_Runtime_freeMemory();
 }
@@ -94,7 +132,7 @@ JNIEXPORT s8 JNICALL Java_java_lang_VMRuntime_freeMemory(JNIEnv *env, jclass cla
  * Method:    totalMemory
  * Signature: ()J
  */
-JNIEXPORT s8 JNICALL Java_java_lang_VMRuntime_totalMemory(JNIEnv *env, jclass clazz)
+JNIEXPORT int64_t JNICALL Java_java_lang_VMRuntime_totalMemory(JNIEnv *env, jclass clazz)
 {
        return _Jv_java_lang_Runtime_totalMemory();
 }
@@ -105,7 +143,7 @@ JNIEXPORT s8 JNICALL Java_java_lang_VMRuntime_totalMemory(JNIEnv *env, jclass cl
  * Method:    maxMemory
  * Signature: ()J
  */
-JNIEXPORT s8 JNICALL Java_java_lang_VMRuntime_maxMemory(JNIEnv *env, jclass clazz)
+JNIEXPORT int64_t JNICALL Java_java_lang_VMRuntime_maxMemory(JNIEnv *env, jclass clazz)
 {
        return gc_get_max_heap_size();
 }
@@ -138,7 +176,7 @@ JNIEXPORT void JNICALL Java_java_lang_VMRuntime_runFinalization(JNIEnv *env, jcl
  * Method:    runFinalizersOnExit
  * Signature: (Z)V
  */
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_runFinalizersOnExit(JNIEnv *env, jclass clazz, s4 value)
+JNIEXPORT void JNICALL Java_java_lang_VMRuntime_runFinalizersOnExit(JNIEnv *env, jclass clazz, int32_t value)
 {
        _Jv_java_lang_Runtime_runFinalizersOnExit(value);
 }
@@ -167,7 +205,7 @@ JNIEXPORT void JNICALL Java_java_lang_VMRuntime_runFinalizationForExit(JNIEnv *e
  * Method:    traceInstructions
  * Signature: (Z)V
  */
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_traceInstructions(JNIEnv *env, jclass clazz, s4 par1)
+JNIEXPORT void JNICALL Java_java_lang_VMRuntime_traceInstructions(JNIEnv *env, jclass clazz, int32_t par1)
 {
        /* not supported */
 }
@@ -178,7 +216,7 @@ JNIEXPORT void JNICALL Java_java_lang_VMRuntime_traceInstructions(JNIEnv *env, j
  * Method:    traceMethodCalls
  * Signature: (Z)V
  */
-JNIEXPORT void JNICALL Java_java_lang_VMRuntime_traceMethodCalls(JNIEnv *env, jclass clazz, s4 par1)
+JNIEXPORT void JNICALL Java_java_lang_VMRuntime_traceMethodCalls(JNIEnv *env, jclass clazz, int32_t par1)
 {
        /* not supported */
 }
@@ -189,13 +227,13 @@ JNIEXPORT void JNICALL Java_java_lang_VMRuntime_traceMethodCalls(JNIEnv *env, jc
  * Method:    availableProcessors
  * Signature: ()I
  */
-JNIEXPORT s4 JNICALL Java_java_lang_VMRuntime_availableProcessors(JNIEnv *env, jclass clazz)
+JNIEXPORT int32_t JNICALL Java_java_lang_VMRuntime_availableProcessors(JNIEnv *env, jclass clazz)
 {
 #if defined(_SC_NPROC_ONLN)
-       return (s4) sysconf(_SC_NPROC_ONLN);
+       return (int32_t) sysconf(_SC_NPROC_ONLN);
 
 #elif defined(_SC_NPROCESSORS_ONLN)
-       return (s4) sysconf(_SC_NPROCESSORS_ONLN);
+       return (int32_t) sysconf(_SC_NPROCESSORS_ONLN);
 
 #elif defined(__DARWIN__)
        /* this should work in BSD */
@@ -208,7 +246,7 @@ JNIEXPORT s4 JNICALL Java_java_lang_VMRuntime_availableProcessors(JNIEnv *env, j
        len = sizeof(ncpu);
        rc = sysctl(mib, 2, &ncpu, &len, NULL, 0);
 
-       return (s4) ncpu;
+       return (int32_t) ncpu;
        */
 
        host_basic_info_data_t hinfo;
@@ -222,7 +260,7 @@ JNIEXPORT s4 JNICALL Java_java_lang_VMRuntime_availableProcessors(JNIEnv *env, j
                return -1;
        }
 
-    return (s4) hinfo.avail_cpus;
+    return (int32_t) hinfo.avail_cpus;
 
 #else
        return 1;
@@ -235,9 +273,17 @@ JNIEXPORT s4 JNICALL Java_java_lang_VMRuntime_availableProcessors(JNIEnv *env, j
  * Method:    nativeLoad
  * Signature: (Ljava/lang/String;Ljava/lang/ClassLoader;)I
  */
-JNIEXPORT s4 JNICALL Java_java_lang_VMRuntime_nativeLoad(JNIEnv *env, jclass clazz, java_lang_String *libname, java_lang_ClassLoader *loader)
+JNIEXPORT int32_t JNICALL Java_java_lang_VMRuntime_nativeLoad(JNIEnv *env, jclass clazz, java_lang_String *libname, java_lang_ClassLoader *loader)
 {
-       _Jv_java_lang_Runtime_loadLibrary(libname, (java_objectheader *) loader);
+       classloader *cl;
+
+       cl = (classloader *) loader;
+
+#if defined(ENABLE_JNI)
+       return _Jv_java_lang_Runtime_loadLibrary(env, libname, cl);
+#else
+       return _Jv_java_lang_Runtime_loadLibrary(libname, cl);
+#endif
 }
 
 
@@ -248,18 +294,18 @@ JNIEXPORT s4 JNICALL Java_java_lang_VMRuntime_nativeLoad(JNIEnv *env, jclass cla
  */
 JNIEXPORT java_lang_String* JNICALL Java_java_lang_VMRuntime_mapLibraryName(JNIEnv *env, jclass clazz, java_lang_String *libname)
 {
-       utf              *u;
-       char             *buffer;
-       s4                buffer_len;
-       s4                dumpsize;
-       java_lang_String *s;
+       utf           *u;
+       char          *buffer;
+       int32_t        buffer_len;
+       int32_t        dumpsize;
+       java_handle_t *o;
 
-       if (!libname) {
+       if (libname == NULL) {
                exceptions_throw_nullpointerexception();
                return NULL;
        }
 
-       u = javastring_toutf(libname, 0);
+       u = javastring_toutf((java_handle_t *) libname, false);
 
        /* calculate length of library name */
 
@@ -289,13 +335,13 @@ JNIEXPORT java_lang_String* JNICALL Java_java_lang_VMRuntime_mapLibraryName(JNIE
        strcat(buffer, ".so");
 #endif
 
-       s = javastring_new_from_utf_string(buffer);
+       o = javastring_new_from_utf_string(buffer);
 
        /* release memory */
 
        dump_release(dumpsize);
 
-       return s;
+       return (java_lang_String *) o;
 }