* Removed all Id tags.
[cacao.git] / src / native / jni.h
index 3230980b855464c08b154e5ea43c022d1c3711d9..a7cc2751eae999f2e3998a243e93ce450a08cdcb 100644 (file)
@@ -1,6 +1,6 @@
-/* native/jni.h - JNI types and data structures
+/* src/native/jni.h - JNI types and data structures
 
-   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: Reinhard Grafl
-            Roman Obermaisser
 
-   Changes: Christian Thalinger
+/* GNU Classpath jni.h *********************************************************
 
-   $Id: jni.h 5104 2006-07-10 17:22:18Z twisti $
+   ATTENTION: We include this file before we actually define our own
+   jni.h.  We do this because, otherwise we can get into unresolvable
+   circular header dependencies.
 
-*/
+   This is OK as GNU Classpath defines:
+
+   #define _CLASSPATH_JNI_H
+
+   CLASSPATH_JNI_H is in config.h defined.
+
+*******************************************************************************/
+
+#include "config.h"
+
+/* XXX quick hack to not include GCJ's jni_md.h */
+#define __GCJ_JNI_MD_H__
 
+#include CLASSPATH_JNI_MD_H
+#include CLASSPATH_JNI_H
 
 #ifndef _JNI_H
 #define _JNI_H
 
-#include "config.h"
+
 #include "vm/types.h"
 
 #include "vm/global.h"
-#include "vm/method.h"
-
 
-/* Include the JNI header from GNU Classpath **********************************/
-
-#include CLASSPATH_JNI_H
+#include "vmcore/method.h"
 
 
 /* _Jv_JNIEnv *****************************************************************/
@@ -54,7 +63,7 @@
 typedef struct _Jv_JNIEnv _Jv_JNIEnv;
 
 struct _Jv_JNIEnv {
-       const struct JNINativeInterface *env;     /* This MUST be the first entry */
+       const struct JNINativeInterface_ *env;    /* This MUST be the first entry */
 };
 
 
@@ -63,52 +72,25 @@ struct _Jv_JNIEnv {
 typedef struct _Jv_JavaVM _Jv_JavaVM;
 
 struct _Jv_JavaVM {
-       const struct JNIInvokeInterface *functions;/* This MUST be the first entry*/
+       const struct JNIInvokeInterface_ *functions;/*This MUST be the first entry*/
 
        /* JVM instance-specific variables */
 
        s8 starttime;                       /* VM startup time                    */
 
+       s4 Java_gnu_java_lang_management_VMClassLoadingMXBeanImpl_verbose;
        s4 Java_gnu_java_lang_management_VMMemoryMXBeanImpl_verbose;
+       s4 java_lang_management_ThreadMXBean_PeakThreadCount;
+       s4 java_lang_management_ThreadMXBean_ThreadCount;
+       s8 java_lang_management_ThreadMXBean_TotalStartedThreadCount;
        s4 Java_java_lang_VMClassLoader_defaultAssertionStatus;
 };
 
 
 /* CACAO related stuff ********************************************************/
 
-extern const struct JNIInvokeInterface _Jv_JNIInvokeInterface;
-extern struct JNINativeInterface _Jv_JNINativeInterface;
-
-
-/* local reference table ******************************************************/
-
-#define LOCALREFTABLE_CAPACITY    16
-
-typedef struct localref_table localref_table;
-
-/* localref_table **************************************************************
-
-   ATTENTION: keep this structure a multiple of 8-bytes!!! This is
-   essential for the native stub on 64-bit architectures.
-
-*******************************************************************************/
-
-struct localref_table {
-       s4                 capacity;        /* table size                         */
-       s4                 used;            /* currently used references          */
-       s4                 localframes;     /* number of current frames           */
-       s4                 PADDING;         /* 8-byte padding                     */
-       localref_table    *prev;            /* link to prev table (LocalFrame)    */
-       java_objectheader *refs[LOCALREFTABLE_CAPACITY]; /* references            */
-};
-
-#if defined(ENABLE_THREADS)
-#define LOCALREFTABLE    (THREADOBJECT->_localref_table)
-#else
-extern localref_table *_no_threads_localref_table;
-
-#define LOCALREFTABLE    (_no_threads_localref_table)
-#endif
+extern const struct JNIInvokeInterface_ _Jv_JNIInvokeInterface;
+extern struct JNINativeInterface_ _Jv_JNINativeInterface;
 
 
 /* hashtable_global_ref_entry *************************************************/
@@ -116,7 +98,7 @@ extern localref_table *_no_threads_localref_table;
 typedef struct hashtable_global_ref_entry hashtable_global_ref_entry;
 
 struct hashtable_global_ref_entry {
-       java_objectheader          *o;      /* object pointer of global ref       */
+       java_object_t              *o;      /* object pointer of global ref       */
        s4                          refs;   /* references of the current pointer  */
        hashtable_global_ref_entry *hashlink; /* link for external chaining       */
 };
@@ -127,8 +109,8 @@ struct hashtable_global_ref_entry {
 /* initialize JNI subsystem */
 bool jni_init(void);
 
-java_objectheader *_Jv_jni_invokeNative(methodinfo *m, java_objectheader *o,
-                                                                               java_objectarray *params);
+java_handle_t *_Jv_jni_invokeNative(methodinfo *m, java_handle_t *o,
+                                                                       java_handle_objectarray_t *params);
 
 #endif /* _JNI_H */