* Removed all Id tags.
[cacao.git] / src / native / vm / gnu / java_lang_VMObject.c
index dbdbd7599a3c3ab5ba64b1c50c872d87b7bae18a..5fc65d362152c426492f712eaac65d7e87e614c9 100644 (file)
@@ -1,6 +1,6 @@
-/* src/native/vm/VMObject.c - java/lang/VMObject
+/* src/native/vm/gnu/java_lang_VMObject.c - java/lang/VMObject
 
-   Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+   Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
    C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
    E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
    J. Wenninger, Institut f. Computersprachen - TU Wien
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
+*/
 
-   Authors: Roman Obermaiser
 
-   Changes: Joseph Wenninger
-            Christian Thalinger
+#include "config.h"
 
-   $Id: java_lang_VMObject.c 6213 2006-12-18 17:36:06Z twisti $
+#include <stdint.h>
 
-*/
+#include "native/jni.h"
+#include "native/native.h"
 
+#include "native/include/java_lang_Class.h"            /* required by j.l.VMO */
+#include "native/include/java_lang_Cloneable.h"        /* required by j.l.VMO */
+#include "native/include/java_lang_Object.h"           /* required by j.l.VMO */
 
-#include "config.h"
+#include "native/include/java_lang_VMObject.h"
 
-#include <stdlib.h>
-#include <string.h>
+#include "native/vm/java_lang_Object.h"
 
-#include "vm/types.h"
+#include "vmcore/utf8.h"
+
+
+/* native methods implemented by this file ************************************/
+
+static JNINativeMethod methods[] = {
+       { "getClass",  "(Ljava/lang/Object;)Ljava/lang/Class;",     (void *) (intptr_t) &Java_java_lang_VMObject_getClass  },
+       { "clone",     "(Ljava/lang/Cloneable;)Ljava/lang/Object;", (void *) (intptr_t) &Java_java_lang_VMObject_clone     },
+       { "notify",    "(Ljava/lang/Object;)V",                     (void *) (intptr_t) &Java_java_lang_VMObject_notify    },
+       { "notifyAll", "(Ljava/lang/Object;)V",                     (void *) (intptr_t) &Java_java_lang_VMObject_notifyAll },
+       { "wait",      "(Ljava/lang/Object;JI)V",                   (void *) (intptr_t) &Java_java_lang_VMObject_wait      },
+};
 
-#include "mm/gc-common.h"
-#include "mm/memory.h"
-#include "toolbox/logging.h"
-#include "native/jni.h"
-#include "native/native.h"
-#include "native/include/java_lang_Class.h"
-#include "native/include/java_lang_Cloneable.h"
-#include "native/include/java_lang_Object.h"
 
-#if defined(ENABLE_THREADS)
-# include "threads/native/threads.h"
-#endif
+/* _Jv_java_lang_VMObject_init *************************************************
 
-#include "vm/builtin.h"
-#include "vm/exceptions.h"
-#include "vm/loader.h"
-#include "vm/options.h"
-#include "vm/stringlocal.h"
+   Register native functions.
 
-#if defined(ENABLE_JVMTI)
-#include "native/jvmti/cacaodbg.h"
-#endif
+*******************************************************************************/
+
+void _Jv_java_lang_VMObject_init(void)
+{
+       utf *u;
+
+       u = utf_new_char("java/lang/VMObject");
+
+       native_method_register(u, methods, NATIVE_METHODS_COUNT);
+}
 
 
 /*
  */
 JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMObject_getClass(JNIEnv *env, jclass clazz, java_lang_Object *obj)
 {
-       classinfo *c;
-
-       if (!obj)
-               return NULL;
-
-       c = ((java_objectheader *) obj)->vftbl->class;
-
-       return (java_lang_Class *) c;
+       return _Jv_java_lang_Object_getClass(obj);
 }
 
 
@@ -90,40 +88,29 @@ JNIEXPORT java_lang_Class* JNICALL Java_java_lang_VMObject_getClass(JNIEnv *env,
  */
 JNIEXPORT java_lang_Object* JNICALL Java_java_lang_VMObject_clone(JNIEnv *env, jclass clazz, java_lang_Cloneable *this)
 {
-       java_objectheader *o;
-       java_objectheader *co;
-
-       o = (java_objectheader *) this;
-
-       co = builtin_clone(env, o);
-
-       return (java_lang_Object *) co;
+       return _Jv_java_lang_Object_clone(this);
 }
 
 
 /*
  * Class:     java/lang/VMObject
  * Method:    notify
- * Signature: ()V
+ * Signature: (Ljava/lang/Object;)V
  */
 JNIEXPORT void JNICALL Java_java_lang_VMObject_notify(JNIEnv *env, jclass clazz, java_lang_Object *this)
 {
-#if defined(ENABLE_THREADS)
-       lock_notify_object(&this->header);
-#endif
+       _Jv_java_lang_Object_notify(this);
 }
 
 
 /*
  * Class:     java/lang/VMObject
  * Method:    notifyAll
- * Signature: ()V
+ * Signature: (Ljava/lang/Object;)V
  */
 JNIEXPORT void JNICALL Java_java_lang_VMObject_notifyAll(JNIEnv *env, jclass clazz, java_lang_Object *this)
 {
-#if defined(ENABLE_THREADS)
-       lock_notify_all_object(&this->header);
-#endif
+       _Jv_java_lang_Object_notifyAll(this);
 }
 
 
@@ -132,22 +119,9 @@ JNIEXPORT void JNICALL Java_java_lang_VMObject_notifyAll(JNIEnv *env, jclass cla
  * Method:    wait
  * Signature: (Ljava/lang/Object;JI)V
  */
-JNIEXPORT void JNICALL Java_java_lang_VMObject_wait(JNIEnv *env, jclass clazz, java_lang_Object *o, s8 ms, s4 ns)
+JNIEXPORT void JNICALL Java_java_lang_VMObject_wait(JNIEnv *env, jclass clazz, java_lang_Object *o, int64_t ms, int32_t ns)
 {
-#if defined(ENABLE_JVMTI)
-       /* Monitor Wait */
-       if (jvmti) jvmti_MonitorWaiting(true, o, ms);
-#endif
-
-#if defined(ENABLE_THREADS)
-       lock_wait_for_object(&o->header, ms, ns);
-#endif
-
-#if defined(ENABLE_JVMTI)
-       /* Monitor Waited */
-       /* XXX: How do you know if wait timed out ?*/
-       if (jvmti) jvmti_MonitorWaiting(false, o, 0);
-#endif
+       _Jv_java_lang_Object_wait(o, ms, ns);
 }