-/* 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);
}
*/
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);
}
* 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);
}