Merging 7971:887db7d64bc9 with 7970:21b063622472.
[cacao.git] / src / mm / cacao-gc / heap.h
index ae3207396bf49080fa78f05ac8972395f2d5953f..f53613a363098292e9a7702d3276b1b9004adf6b 100644 (file)
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
-
-   Authors: Michael Starzinger
-
-   $Id$
-
 */
 
 
 
 #include "gc.h"
 #include "region.h"
-
-
-
-/* TODO: maybe move this to global.h */
-#define GC_FLAG_FINALIZER     0x10
-#define GC_FLAG_UNCOLLECTABLE HDRFLAG_UNCOLLECTABLE
-#define GC_FLAG_MARKED        (HDRFLAG_MARK1 | HDRFLAG_MARK2)
-
-#define GC_IS_MARKED(obj)    GC_TEST_FLAGS(obj, GC_FLAG_MARKED)
-#define GC_SET_MARKED(obj)   GC_SET_FLAGS(obj, GC_FLAG_MARKED)
-#define GC_CLEAR_MARKED(obj) GC_CLEAR_FLAGS(obj, GC_FLAG_MARKED)
+#include "vm/array.h" /* needed for ARRAYTYPE_OBJECT */
 
 
 #define GC_SIZE_DUMMY 0xff
 
-
 #if SIZEOF_VOID_P == 8
 # define GC_GET_SIZE(obj)       ((u4) (((obj)->hdrflags >> 56) & 0xff))
 # define GC_SET_SIZE(obj, size) ((obj)->hdrflags |= ((u8) ((size) & 0xff)) << 56)
-# define GC_GET_HASH(obj)       ((obj)->hdrflags)
 #else
 # define GC_GET_SIZE(obj)       ((u4) (((obj)->hdrflags >> 24) & 0xff))
 # define GC_SET_SIZE(obj, size) ((obj)->hdrflags |= ((u4) ((size) & 0xff)) << 24)
-# define GC_GET_HASH(obj)       ((obj)->hdrflags)
-# define GC_SET_HASH(obj, hash) ((obj)->hdrflags |= ((hash) << 8) & 0x00ffff00)
 #endif
 
 
-/*extern void *heap_base;
-extern void *heap_ptr;*/
 extern s4 heap_current_size;
 extern s4 heap_maximal_size;
-extern s4 heap_free_size;
-extern s4 heap_used_size;
 extern regioninfo_t *heap_region_sys;
 extern regioninfo_t *heap_region_main;
 
 
-s4 get_object_size(java_objectheader *o);
-
+s4 get_object_size(java_object_t *o);
 
 #if !defined(NDEBUG)
-void heap_print_object(java_objectheader *o);
+void heap_println_usage();
+void heap_print_object(java_object_t *o);
 void heap_dump_region(regioninfo_t *region, bool marked_only);
 #endif
 
@@ -89,8 +65,8 @@ void heap_dump_region(regioninfo_t *region, bool marked_only);
 #define IS_ARRAY(o) ((o)->vftbl->arraydesc != NULL)
 #define FOREACH_ARRAY_REF(o,ref,refptr,code) \
        { \
-               java_objectarray *a = (java_objectarray *) o; \
-               arraydescriptor  *desc = o->vftbl->arraydesc; \
+               java_objectarray_t *a = (java_objectarray_t *) o; \
+               arraydescriptor    *desc = o->vftbl->arraydesc; \
                int i; \
                \
                GC_ASSERT(desc); \
@@ -99,7 +75,7 @@ void heap_dump_region(regioninfo_t *region, bool marked_only);
                        for (i = 0; i < a->header.size; i++) { \
                                \
                                refptr = &( a->data[i] ); \
-                               ref = (java_objectheader *) (a->data[i]); \
+                               ref = (java_object_t *) (a->data[i]); \
                                \
                                code; \
                        } \
@@ -114,14 +90,14 @@ void heap_dump_region(regioninfo_t *region, bool marked_only);
                \
                GC_ASSERT(c); \
                \
-               for (; c; c = c->super.cls) { \
+               for (; c; c = c->super) { \
                        for (i = 0; i < c->fieldscount; i++) { \
                                f = &(c->fields[i]); \
                                \
                                if (!IS_ADR_TYPE(f->type) || (f->flags & ACC_STATIC)) \
                                        continue; \
                                \
-                               refptr = (java_objectheader **) ((s1 *) o + f->offset); \
+                               refptr = (java_object_t **) ((s1 *) o + f->offset); \
                                ref = *( refptr ); \
                                \
                                code; \