* configure.ac (AC_CHECK_ENABLE_ASSERTION): Added
[cacao.git] / src / native / jni.h
index d9bc29bea6d7b116f96e49c09b49822341c0f799..05a013659d12f8a74c0041aa7cff4d89f3ccbece 100644 (file)
@@ -1,6 +1,6 @@
 /* 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
-            Christian Thalinger
-
-   $Id: jni.h 6167 2006-12-10 23:20:31Z twisti $
-
 */
 
 
 
 #include "config.h"
 
-#include CLASSPATH_JNI_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
 
-/* forward typedefs ***********************************************************/
-
-typedef struct localref_table localref_table;
-
 
 #include "vm/types.h"
 
 #include "vm/global.h"
-#include "vm/method.h"
+
+#include "vmcore/method.h"
 
 
 /* _Jv_JNIEnv *****************************************************************/
@@ -71,7 +63,7 @@ typedef struct localref_table localref_table;
 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 */
 };
 
 
@@ -80,7 +72,7 @@ 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 */
 
@@ -91,43 +83,13 @@ struct _Jv_JavaVM {
        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
-
-/* 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 *************************************************/
@@ -135,7 +97,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       */
 };
@@ -143,12 +105,11 @@ struct hashtable_global_ref_entry {
 
 /* function prototypes ********************************************************/
 
-/* initialize JNI subsystem */
 bool jni_init(void);
-bool jni_init_localref_table(void);
+bool jni_version_check(int version);
 
-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 */