Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: global.h 8339 2007-08-17 21:21:51Z twisti $
-
*/
#define _GLOBAL_H
#include "config.h"
+
+#include <stdint.h>
+
#include "vm/types.h"
*******************************************************************************/
-#define HDRFLAG_FLC 0x01
+#define HDRFLAG_FLC 0x01
+#define HDRFLAG_MARK1 0x02
+#define HDRFLAG_MARK2 0x04
+#define HDRFLAG_UNCOLLECTABLE 0x08
+#define HDRFLAG_HASH_TAKEN 0x10
+#define HDRFLAG_HASH_ATTACHED 0x20
+#define HDRFLAG_REFERENCING 0x40
struct java_object_t { /* header for all objects */
- struct _vftbl *vftbl; /* pointer to virtual function table */
+ struct _vftbl *vftbl; /* pointer to virtual function table */
#if defined(ENABLE_THREADS)
- struct lock_record_t *monitorPtr;
+ uintptr_t lockword;
#endif
#if defined(ENABLE_THREADS) || defined(ENABLE_GC_CACAO)
- ptrint hdrflags; /* word containing the FLC and GC bits */
+ uintptr_t hdrflags; /* word containing the FLC and GC bits */
#endif
};
*******************************************************************************/
-#if 0
+#if defined(ENABLE_HANDLES)
typedef struct java_handle_t {
java_object_t *heap_object;
} java_handle_t;
-#elseif 0
-typedef union {
- java_object_t object;
- java_array_t array;
-} java_handle_t;
+
+typedef struct java_handle_objectarray_t { java_objectarray_t *heap_object; } java_handle_objectarray_t;
+typedef struct java_handle_booleanarray_t { java_booleanarray_t *heap_object; } java_handle_booleanarray_t;
+typedef struct java_handle_bytearray_t { java_bytearray_t *heap_object; } java_handle_bytearray_t;
+typedef struct java_handle_chararray_t { java_chararray_t *heap_object; } java_handle_chararray_t;
+typedef struct java_handle_shortarray_t { java_shortarray_t *heap_object; } java_handle_shortarray_t;
+typedef struct java_handle_intarray_t { java_intarray_t *heap_object; } java_handle_intarray_t;
+typedef struct java_handle_longarray_t { java_longarray_t *heap_object; } java_handle_longarray_t;
+typedef struct java_handle_floatarray_t { java_floatarray_t *heap_object; } java_handle_floatarray_t;
+typedef struct java_handle_doublearray_t { java_doublearray_t *heap_object; } java_handle_doublearray_t;
#else
typedef java_object_t java_handle_t;
typedef java_objectarray_t java_handle_objectarray_t;