Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: global.h 8123 2007-06-20 23:50:55Z michi $
+ $Id: global.h 8299 2007-08-13 08:41:18Z michi $
*/
/* alignment macros ***********************************************************/
-#define ALIGN_2(a) do { if ((a) & 0x1) (a)++; } while (0)
+#define ALIGN_EVEN(a) ((a) = (((a) + 1) & ~1))
+#define ALIGN_ODD(a) ((a) = (a) | 1 )
+
+#define ALIGN_2(a) ALIGN_EVEN(a)
/* forward typedefs ***********************************************************/
-typedef struct java_objectheader java_objectheader;
+typedef struct java_object_t java_object_t;
typedef struct java_objectarray java_objectarray;
#define ACC_CLASS_REFLECT_MASK 0x0000ffff/* flags reported by reflection */
#define ACC_CLASS_PRIMITIVE 0x00010000/* class is a primitive class */
+
#define ACC_CLASS_HAS_POINTERS 0x00020000/* instance contains pointers */
-#define ACC_CLASS_SOFT_REFERENCE 0x00040000
-#define ACC_CLASS_WEAK_REFERENCE 0x00080000
-#define ACC_CLASS_PHANTOM_REFERENCE 0x00100000
+
+#define ACC_CLASS_REFERENCE_MASK 0x001c0000
+#define ACC_CLASS_REFERENCE_SOFT 0x00040000
+#define ACC_CLASS_REFERENCE_WEAK 0x00080000
+#define ACC_CLASS_REFERENCE_PHANTOM 0x00100000
/* special flags used in methodinfo *******************************************/
-#define ACC_METHOD_IMPLEMENTED 0x00010000 /* there is an implementation */
-#define ACC_METHOD_MONOMORPHIC 0x00020000 /* currently monomorphic method */
+#define ACC_METHOD_BUILTIN 0x00010000 /* use for descriptor parsing */
+#define ACC_METHOD_IMPLEMENTED 0x00020000 /* there is an implementation */
+#define ACC_METHOD_MONOMORPHIC 0x00040000 /* currently monomorphic method */
/* data structures of the runtime system **************************************/
-/* java_objectheader ***********************************************************
+/* java_object_t ***************************************************************
All objects (and arrays) which resides on the heap need the
following header at the beginning of the data structure.
#define HDRFLAG_HASH_ATTACHED 0x20
#define HDRFLAG_REFERENCING 0x40
-struct java_objectheader { /* header for all objects */
+struct java_object_t { /* header for all objects */
struct _vftbl *vftbl; /* pointer to virtual function table */
#if defined(ENABLE_THREADS)
struct lock_record_t *monitorPtr;
};
+#if 0
+typedef struct java_handle_t {
+ java_object_t *heap_object;
+} java_handle_t;
+#else
+typedef java_object_t java_handle_t;
+#endif
+
+
/* arrays **********************************************************************
All arrays are objects (they need the object header with a pointer
*/
typedef struct java_arrayheader { /* header for all arrays */
- java_objectheader objheader; /* object header */
+ java_object_t objheader; /* object header */
s4 size; /* array size */
} java_arrayheader;
use the same machine code */
struct java_objectarray {
- java_arrayheader header;
- java_objectheader *data[1];
+ java_arrayheader header;
+ java_object_t *data[1];
};