[sgen] Typedef for GC descriptors.
authorMark Probst <mark.probst@gmail.com>
Fri, 15 May 2015 22:32:04 +0000 (15:32 -0700)
committerMark Probst <mark.probst@gmail.com>
Mon, 22 Jun 2015 19:07:00 +0000 (12:07 -0700)
12 files changed:
mono/metadata/sgen-client-mono.h
mono/metadata/sgen-mono.c
mono/sgen/sgen-debug.c
mono/sgen/sgen-descriptor.c
mono/sgen/sgen-descriptor.h
mono/sgen/sgen-gc.c
mono/sgen/sgen-gc.h
mono/sgen/sgen-gray.c
mono/sgen/sgen-gray.h
mono/sgen/sgen-marksweep-drain-gray-stack.h
mono/sgen/sgen-marksweep-scan-object-concurrent.h
mono/sgen/sgen-minor-scan-object.h

index 05645383d42c91fe23a3694454da1949f0bfcf29..2847011dc22d42f47fb168607d3a12ccb77b946b 100644 (file)
@@ -33,10 +33,10 @@ SGEN_LOAD_VTABLE_UNCHECKED (GCObject *obj)
        return obj->vtable;
 }
 
-static inline mword
+static inline SgenDescriptor
 sgen_vtable_get_descriptor (GCVTable vtable)
 {
-       return (mword)vtable->gc_descr;
+       return (SgenDescriptor)vtable->gc_descr;
 }
 
 typedef struct _SgenClientThreadInfo SgenClientThreadInfo;
@@ -140,7 +140,7 @@ sgen_client_slow_object_get_size (GCVTable vtable, GCObject* o)
 static MONO_NEVER_INLINE mword
 sgen_client_par_object_get_size (GCVTable vtable, GCObject* o)
 {
-       mword descr = sgen_vtable_get_descriptor (vtable);
+       SgenDescriptor descr = sgen_vtable_get_descriptor (vtable);
        mword type = descr & DESC_TYPE_MASK;
 
        if (type == DESC_TYPE_RUN_LENGTH || type == DESC_TYPE_SMALL_PTRFREE) {
index 0513371555019117775e183d91d524627ec41d9a..7d8e12dc8ee6dea75793d6f05c24180311ec1b3f 100644 (file)
@@ -2404,13 +2404,13 @@ mono_gc_set_stack_end (void *stack_end)
 int
 mono_gc_register_root (char *start, size_t size, void *descr)
 {
-       return sgen_register_root (start, size, descr, descr ? ROOT_TYPE_NORMAL : ROOT_TYPE_PINNED);
+       return sgen_register_root (start, size, (SgenDescriptor)descr, descr ? ROOT_TYPE_NORMAL : ROOT_TYPE_PINNED);
 }
 
 int
 mono_gc_register_root_wbarrier (char *start, size_t size, void *descr)
 {
-       return sgen_register_root (start, size, descr, ROOT_TYPE_WBARRIER);
+       return sgen_register_root (start, size, (SgenDescriptor)descr, ROOT_TYPE_WBARRIER);
 }
 
 void
@@ -2541,7 +2541,7 @@ mono_gc_get_heap_size (void)
 void*
 mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker)
 {
-       return sgen_make_user_root_descriptor ((SgenUserRootMarkFunc)marker);
+       return (void*)sgen_make_user_root_descriptor ((SgenUserRootMarkFunc)marker);
 }
 
 void*
index 07d423012f2b0aecf3db1ad8d2913fe6922edbef..5b4f7fe3ce4851feb66109b5ff9af19532c51524 100644 (file)
@@ -68,7 +68,7 @@ static void
 describe_pointer (char *ptr, gboolean need_setup)
 {
        GCVTable vtable;
-       mword desc;
+       SgenDescriptor desc;
        int type;
        char *start;
        char *forwarded;
@@ -180,7 +180,7 @@ check_consistency_callback (GCObject *obj, size_t size, void *dummy)
 {
        char *start = (char*)obj;
        GCVTable vt = LOAD_VTABLE (obj);
-       mword desc = sgen_vtable_get_descriptor (vt);
+       SgenDescriptor desc = sgen_vtable_get_descriptor (vt);
        SGEN_LOG (8, "Scanning object %p, vtable: %p (%s)", start, vt, sgen_client_vtable_get_name (vt));
 
 #include "sgen-scan-object.h"
@@ -239,7 +239,7 @@ check_mod_union_callback (GCObject *obj, size_t size, void *dummy)
        char *start = (char*)obj;
        gboolean in_los = (gboolean) (size_t) dummy;
        GCVTable vt = LOAD_VTABLE (obj);
-       mword desc = sgen_vtable_get_descriptor (vt);
+       SgenDescriptor desc = sgen_vtable_get_descriptor (vt);
        guint8 *cards;
        SGEN_LOG (8, "Scanning object %p, vtable: %p (%s)", obj, vt, sgen_client_vtable_get_name (vt));
 
@@ -279,7 +279,7 @@ static void
 check_major_refs_callback (GCObject *obj, size_t size, void *dummy)
 {
        char *start = (char*)obj;
-       mword desc = sgen_obj_get_descriptor (obj);
+       SgenDescriptor desc = sgen_obj_get_descriptor (obj);
 
 #include "sgen-scan-object.h"
 }
@@ -309,7 +309,7 @@ void
 check_object (GCObject *obj)
 {
        char *start = (char*)obj;
-       mword desc;
+       SgenDescriptor desc;
 
        if (!start)
                return;
@@ -453,7 +453,7 @@ verify_object_pointers_callback (GCObject *obj, size_t size, void *data)
 {
        char *start = (char*)obj;
        gboolean allow_missing_pinned = (gboolean) (size_t) data;
-       mword desc = sgen_obj_get_descriptor (obj);
+       SgenDescriptor desc = sgen_obj_get_descriptor (obj);
 
 #include "sgen-scan-object.h"
 }
@@ -578,7 +578,7 @@ check_marked_callback (GCObject *obj, size_t size, void *dummy)
 {
        char *start = (char*)obj;
        gboolean flag = (gboolean) (size_t) dummy;
-       mword desc;
+       SgenDescriptor desc;
 
        if (sgen_ptr_in_nursery (start)) {
                if (flag)
@@ -740,7 +740,7 @@ scan_object_for_specific_ref (GCObject *obj, GCObject *key)
 
        if (scan_object_for_specific_ref_precise) {
                char *start = (char*)obj;
-               mword desc = sgen_obj_get_descriptor_safe (obj);
+               SgenDescriptor desc = sgen_obj_get_descriptor_safe (obj);
                #include "sgen-scan-object.h"
        } else {
                mword *words = (mword*)obj;
@@ -787,7 +787,7 @@ scan_roots_for_specific_ref (GCObject *key, int root_type)
        check_key = key;
 
        SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
-               mword desc = root->root_desc;
+               SgenDescriptor desc = root->root_desc;
 
                check_root = root;
 
@@ -888,7 +888,7 @@ sgen_scan_for_registered_roots_in_domain (MonoDomain *domain, int root_type)
        RootRecord *root;
        check_domain = domain;
        SGEN_HASH_TABLE_FOREACH (&roots_hash [root_type], start_root, root) {
-               mword desc = root->root_desc;
+               SgenDescriptor desc = root->root_desc;
 
                /* The MonoDomain struct is allowed to hold
                   references to objects in its own domain. */
@@ -1030,7 +1030,7 @@ scan_object_for_xdomain_refs (GCObject *obj, mword size, void *data)
        char *start = (char*)obj;
        MonoVTable *vt = SGEN_LOAD_VTABLE (obj);
        MonoDomain *domain = vt->domain;
-       mword desc = sgen_vtable_get_descriptor (vt);
+       SgenDescriptor desc = sgen_vtable_get_descriptor (vt);
 
        #include "sgen-scan-object.h"
 }
index 4747c7ce29285183df516b3e5e568b516d094e90..2e7b42fbd3965f074aee05a3befa698dd6f7d34a 100644 (file)
@@ -110,7 +110,7 @@ alloc_complex_descriptor (gsize *bitmap, int numbits)
 }
 
 gsize*
-sgen_get_complex_descriptor (mword desc)
+sgen_get_complex_descriptor (SgenDescriptor desc)
 {
        return complex_descriptors + (desc >> LOW_TYPE_BITS);
 }
@@ -122,7 +122,7 @@ void*
 mono_gc_make_descr_for_object (gsize *bitmap, int numbits, size_t obj_size)
 {
        int first_set = -1, num_set = 0, last_set = -1, i;
-       mword desc = 0;
+       SgenDescriptor desc = 0;
        size_t stored_size = obj_size;
 
        stored_size += SGEN_ALLOC_ALIGN - 1;
@@ -177,7 +177,7 @@ void*
 mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_t elem_size)
 {
        int first_set = -1, num_set = 0, last_set = -1, i;
-       mword desc = DESC_TYPE_VECTOR | (vector ? VECTOR_KIND_SZARRAY : VECTOR_KIND_ARRAY);
+       SgenDescriptor desc = DESC_TYPE_VECTOR | (vector ? VECTOR_KIND_SZARRAY : VECTOR_KIND_ARRAY);
        for (i = 0; i < numbits; ++i) {
                if (elem_bitmap [i / GC_BITS_PER_WORD] & ((gsize)1 << (i % GC_BITS_PER_WORD))) {
                        if (first_set < 0)
@@ -218,7 +218,7 @@ mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_
 gsize*
 mono_gc_get_bitmap_for_descr (void *descr, int *numbits)
 {
-       mword d = (mword)descr;
+       SgenDescriptor d = (SgenDescriptor)descr;
        gsize *bitmap;
 
        switch (d & DESC_TYPE_MASK) {
@@ -278,7 +278,7 @@ mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
        } else if (numbits < ((sizeof (*bitmap) * 8) - ROOT_DESC_TYPE_SHIFT)) {
                return (void*)MAKE_ROOT_DESC (ROOT_DESC_BITMAP, bitmap [0]);
        } else {
-               mword complex = alloc_complex_descriptor (bitmap, numbits);
+               SgenDescriptor complex = alloc_complex_descriptor (bitmap, numbits);
                return (void*)MAKE_ROOT_DESC (ROOT_DESC_COMPLEX, complex);
        }
 }
@@ -310,33 +310,33 @@ mono_gc_make_root_descr_all_refs (int numbits)
        return descr;
 }
 
-void*
+SgenDescriptor
 sgen_make_user_root_descriptor (SgenUserRootMarkFunc marker)
 {
-       void *descr;
+       SgenDescriptor descr;
 
        g_assert (user_descriptors_next < MAX_USER_DESCRIPTORS);
-       descr = (void*)MAKE_ROOT_DESC (ROOT_DESC_USER, (mword)user_descriptors_next);
+       descr = MAKE_ROOT_DESC (ROOT_DESC_USER, (SgenDescriptor)user_descriptors_next);
        user_descriptors [user_descriptors_next ++] = marker;
 
        return descr;
 }
 
 void*
-sgen_get_complex_descriptor_bitmap (mword desc)
+sgen_get_complex_descriptor_bitmap (SgenDescriptor desc)
 {
        return complex_descriptors + (desc >> ROOT_DESC_TYPE_SHIFT);
 }
 
 SgenUserRootMarkFunc
-sgen_get_user_descriptor_func (mword desc)
+sgen_get_user_descriptor_func (SgenDescriptor desc)
 {
        return user_descriptors [desc >> ROOT_DESC_TYPE_SHIFT];
 }
 
 #ifdef HEAVY_STATISTICS
 void
-sgen_descriptor_count_scanned_object (mword desc)
+sgen_descriptor_count_scanned_object (SgenDescriptor desc)
 {
        int type = desc & DESC_TYPE_MASK;
        SGEN_ASSERT (0, type, "Descriptor type can't be zero");
@@ -344,7 +344,7 @@ sgen_descriptor_count_scanned_object (mword desc)
 }
 
 void
-sgen_descriptor_count_copied_object (mword desc)
+sgen_descriptor_count_copied_object (SgenDescriptor desc)
 {
        int type = desc & DESC_TYPE_MASK;
        SGEN_ASSERT (0, type, "Descriptor type can't be zero");
index e5958181513ea9f25267159da4113398e4ebd8c7..c61fa5f74d6bda3391e959ce4b0b580a15d0cdf2 100644 (file)
@@ -25,7 +25,6 @@
 
 #include <mono/sgen/sgen-conf.h>
 
-
 /*
  * ######################################################################
  * ########  GC descriptors
@@ -134,21 +133,21 @@ enum {
 typedef void (*SgenUserMarkFunc)     (GCObject **addr, void *gc_data);
 typedef void (*SgenUserRootMarkFunc) (void *addr, SgenUserMarkFunc mark_func, void *gc_data);
 
-void* sgen_make_user_root_descriptor (SgenUserRootMarkFunc marker);
+SgenDescriptor sgen_make_user_root_descriptor (SgenUserRootMarkFunc marker);
 
-gsize* sgen_get_complex_descriptor (mword desc);
-void* sgen_get_complex_descriptor_bitmap (mword desc);
-SgenUserRootMarkFunc sgen_get_user_descriptor_func (mword desc);
+gsize* sgen_get_complex_descriptor (SgenDescriptor desc);
+void* sgen_get_complex_descriptor_bitmap (SgenDescriptor desc);
+SgenUserRootMarkFunc sgen_get_user_descriptor_func (SgenDescriptor desc);
 
 void sgen_init_descriptors (void);
 
 #ifdef HEAVY_STATISTICS
-void sgen_descriptor_count_scanned_object (mword desc);
-void sgen_descriptor_count_copied_object (mword desc);
+void sgen_descriptor_count_scanned_object (SgenDescriptor desc);
+void sgen_descriptor_count_copied_object (SgenDescriptor desc);
 #endif
 
 static inline gboolean
-sgen_gc_descr_has_references (mword desc)
+sgen_gc_descr_has_references (SgenDescriptor desc)
 {
        /* This covers SMALL_PTRFREE and COMPLEX_PTRFREE */
        if ((desc & DESC_TYPE_PTRFREE_MASK) == DESC_TYPE_PTRFREE_BITS)
index 666d0ef87221212f7d021e7367674eaa3dfc9ca2..291038d06d6c0775c99ef54c2ca20e7277c13705 100644 (file)
@@ -555,7 +555,7 @@ sgen_drain_gray_stack (int max_objs, ScanCopyContext ctx)
                int i;
                for (i = 0; i != max_objs; ++i) {
                        GCObject *obj;
-                       mword desc;
+                       SgenDescriptor desc;
                        GRAY_OBJECT_DEQUEUE (queue, &obj, &desc);
                        if (!obj)
                                return TRUE;
@@ -596,7 +596,7 @@ pin_objects_from_nursery_pin_queue (gboolean do_scan_objects, ScanCopyContext ct
        while (start < end) {
                void *obj_to_pin = NULL;
                size_t obj_to_pin_size = 0;
-               mword desc;
+               SgenDescriptor desc;
 
                addr = *start;
 
@@ -890,7 +890,7 @@ unpin_objects_from_queue (SgenGrayQueue *queue)
 {
        for (;;) {
                GCObject *addr;
-               mword desc;
+               SgenDescriptor desc;
                GRAY_OBJECT_DEQUEUE (queue, &addr, &desc);
                if (!addr)
                        break;
@@ -915,7 +915,7 @@ single_arg_user_copy_or_mark (GCObject **obj, void *gc_data)
  * This function is not thread-safe!
  */
 static void
-precisely_scan_objects_from (void** start_root, void** end_root, char* n_start, char *n_end, mword desc, ScanCopyContext ctx)
+precisely_scan_objects_from (void** start_root, void** end_root, char* n_start, char *n_end, SgenDescriptor desc, ScanCopyContext ctx)
 {
        CopyOrMarkObjectFunc copy_func = ctx.ops->copy_or_mark_object;
        SgenGrayQueue *queue = ctx.queue;
@@ -2596,7 +2596,7 @@ sgen_have_pending_finalizers (void)
  * We do not coalesce roots.
  */
 int
-sgen_register_root (char *start, size_t size, void *descr, int root_type)
+sgen_register_root (char *start, size_t size, SgenDescriptor descr, int root_type)
 {
        RootRecord new_root;
        int i;
@@ -2607,9 +2607,8 @@ sgen_register_root (char *start, size_t size, void *descr, int root_type)
                if (root) {
                        size_t old_size = root->end_root - start;
                        root->end_root = start + size;
-                       g_assert (((root->root_desc != 0) && (descr != NULL)) ||
-                                         ((root->root_desc == 0) && (descr == NULL)));
-                       root->root_desc = (mword)descr;
+                       SGEN_ASSERT (0, !!root->root_desc == !!descr, "Can't change whether a root is precise or conservative.");
+                       root->root_desc = descr;
                        roots_size += size;
                        roots_size -= old_size;
                        UNLOCK_GC;
@@ -2618,12 +2617,12 @@ sgen_register_root (char *start, size_t size, void *descr, int root_type)
        }
 
        new_root.end_root = start + size;
-       new_root.root_desc = (mword)descr;
+       new_root.root_desc = descr;
 
        sgen_hash_table_replace (&roots_hash [root_type], start, &new_root, NULL);
        roots_size += size;
 
-       SGEN_LOG (3, "Added root for range: %p-%p, descr: %p  (%d/%d bytes)", start, new_root.end_root, descr, (int)size, (int)roots_size);
+       SGEN_LOG (3, "Added root for range: %p-%p, descr: %llx  (%d/%d bytes)", start, new_root.end_root, descr, (int)size, (int)roots_size);
 
        UNLOCK_GC;
        return TRUE;
index 44cc7d42629129b6d0f5bf959031a0028a35fc37..f62adc1e5a78475936bf8dfa41270b54a63928d7 100644 (file)
@@ -285,27 +285,7 @@ enum {
        SGEN_GC_BIT_FINALIZER_AWARE = 4,
 };
 
-/* the runtime can register areas of memory as roots: we keep two lists of roots,
- * a pinned root set for conservatively scanned roots and a normal one for
- * precisely scanned roots (currently implemented as a single list).
- */
-typedef struct _RootRecord RootRecord;
-struct _RootRecord {
-       char *end_root;
-       mword root_desc;
-};
-
-enum {
-       ROOT_TYPE_NORMAL = 0, /* "normal" roots */
-       ROOT_TYPE_PINNED = 1, /* roots without a GC descriptor */
-       ROOT_TYPE_WBARRIER = 2, /* roots with a write barrier */
-       ROOT_TYPE_NUM
-};
-
-extern SgenHashTable roots_hash [ROOT_TYPE_NUM];
-
-int sgen_register_root (char *start, size_t size, void *descr, int root_type);
-void sgen_deregister_root (char* addr);
+typedef mword SgenDescriptor;
 
 void sgen_gc_init (void);
 
@@ -382,6 +362,28 @@ void sgen_init_internal_allocator (void);
 #include "mono/sgen/sgen-descriptor.h"
 #include "mono/sgen/sgen-gray.h"
 
+/* the runtime can register areas of memory as roots: we keep two lists of roots,
+ * a pinned root set for conservatively scanned roots and a normal one for
+ * precisely scanned roots (currently implemented as a single list).
+ */
+typedef struct _RootRecord RootRecord;
+struct _RootRecord {
+       char *end_root;
+       SgenDescriptor root_desc;
+};
+
+enum {
+       ROOT_TYPE_NORMAL = 0, /* "normal" roots */
+       ROOT_TYPE_PINNED = 1, /* roots without a GC descriptor */
+       ROOT_TYPE_WBARRIER = 2, /* roots with a write barrier */
+       ROOT_TYPE_NUM
+};
+
+extern SgenHashTable roots_hash [ROOT_TYPE_NUM];
+
+int sgen_register_root (char *start, size_t size, SgenDescriptor descr, int root_type);
+void sgen_deregister_root (char* addr);
+
 typedef void (*IterateObjectCallbackFunc) (GCObject*, size_t, void*);
 
 void sgen_scan_area_with_callback (char *start, char *end, IterateObjectCallbackFunc callback, void *data, gboolean allow_flags);
@@ -409,8 +411,8 @@ struct _SgenThreadInfo {
 gboolean sgen_is_worker_thread (MonoNativeThreadId thread);
 
 typedef void (*CopyOrMarkObjectFunc) (GCObject**, SgenGrayQueue*);
-typedef void (*ScanObjectFunc) (GCObject *obj, mword desc, SgenGrayQueue*);
-typedef void (*ScanVTypeFunc) (GCObject *full_object, char *start, mword desc, SgenGrayQueue* BINARY_PROTOCOL_ARG (size_t size));
+typedef void (*ScanObjectFunc) (GCObject *obj, SgenDescriptor desc, SgenGrayQueue*);
+typedef void (*ScanVTypeFunc) (GCObject *full_object, char *start, SgenDescriptor desc, SgenGrayQueue* BINARY_PROTOCOL_ARG (size_t size));
 
 typedef struct {
        CopyOrMarkObjectFunc copy_or_mark_object;
@@ -704,7 +706,7 @@ void mono_gc_wbarrier_generic_store_atomic (gpointer ptr, GCObject *value);
 
 void sgen_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap);
 
-static inline mword
+static inline SgenDescriptor
 sgen_obj_get_descriptor (GCObject *obj)
 {
        GCVTable vtable = SGEN_LOAD_VTABLE_UNCHECKED (obj);
@@ -712,7 +714,7 @@ sgen_obj_get_descriptor (GCObject *obj)
        return sgen_vtable_get_descriptor (vtable);
 }
 
-static inline mword
+static inline SgenDescriptor
 sgen_obj_get_descriptor_safe (GCObject *obj)
 {
        GCVTable vtable = SGEN_LOAD_VTABLE (obj);
index 5b6040eabd8eb377fc01c050e2ad5c8bdddea3e4..fd561d50ff4319174803a13980ab0c18728609f6 100644 (file)
@@ -96,7 +96,7 @@ sgen_gray_object_free_queue_section (GrayQueueSection *section)
  */
 
 void
-sgen_gray_object_enqueue (SgenGrayQueue *queue, GCObject *obj, mword desc)
+sgen_gray_object_enqueue (SgenGrayQueue *queue, GCObject *obj, SgenDescriptor desc)
 {
        GrayQueueEntry entry = SGEN_GRAY_QUEUE_ENTRY (obj, desc);
 
index 101454f932eedef9d9f7eb5daf55aa397c1a026a..79d2c701a0e4938ecd873144e72132546cbcae83 100644 (file)
@@ -71,7 +71,7 @@ typedef enum {
 typedef struct _GrayQueueEntry GrayQueueEntry;
 struct _GrayQueueEntry {
        GCObject *obj;
-       mword desc;
+       SgenDescriptor desc;
 };
 
 #define SGEN_GRAY_QUEUE_ENTRY(obj,desc)        { (obj), (desc) }
@@ -136,7 +136,7 @@ extern guint64 stat_gray_queue_dequeue_slow_path;
 
 void sgen_init_gray_queues (void);
 
-void sgen_gray_object_enqueue (SgenGrayQueue *queue, GCObject *obj, mword desc);
+void sgen_gray_object_enqueue (SgenGrayQueue *queue, GCObject *obj, SgenDescriptor desc);
 GrayQueueEntry sgen_gray_object_dequeue (SgenGrayQueue *queue);
 GrayQueueSection* sgen_gray_object_dequeue_section (SgenGrayQueue *queue);
 void sgen_gray_object_enqueue_section (SgenGrayQueue *queue, GrayQueueSection *section);
@@ -166,7 +166,7 @@ sgen_gray_object_queue_is_empty (SgenGrayQueue *queue)
 }
 
 static inline MONO_ALWAYS_INLINE void
-GRAY_OBJECT_ENQUEUE (SgenGrayQueue *queue, GCObject *obj, mword desc)
+GRAY_OBJECT_ENQUEUE (SgenGrayQueue *queue, GCObject *obj, SgenDescriptor desc)
 {
 #if SGEN_MAX_DEBUG_LEVEL >= 9
        sgen_gray_object_enqueue (queue, obj, desc);
@@ -187,7 +187,7 @@ GRAY_OBJECT_ENQUEUE (SgenGrayQueue *queue, GCObject *obj, mword desc)
 }
 
 static inline MONO_ALWAYS_INLINE void
-GRAY_OBJECT_DEQUEUE (SgenGrayQueue *queue, GCObject** obj, mword *desc)
+GRAY_OBJECT_DEQUEUE (SgenGrayQueue *queue, GCObject** obj, SgenDescriptor *desc)
 {
        GrayQueueEntry entry;
 #if SGEN_MAX_DEBUG_LEVEL >= 9
index 47a40c3c11f6283c4701804caff1af05dd753f71..01d276ad06df9c15d84703b677bf3974505f655b 100644 (file)
@@ -41,7 +41,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
        ++stat_optimized_copy;
        {
                char *forwarded;
-               mword desc;
+               SgenDescriptor desc;
                if ((forwarded = SGEN_OBJECT_IS_FORWARDED (obj)))
                        desc = sgen_obj_get_descriptor_safe (forwarded);
                else
@@ -130,7 +130,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
                return FALSE;
        } else {
                mword vtable_word = *(mword*)obj;
-               mword desc;
+               SgenDescriptor desc;
                int type;
 
                HEAVY_STAT (++stat_optimized_copy_major);
@@ -194,7 +194,7 @@ COPY_OR_MARK_FUNCTION_NAME (GCObject **ptr, GCObject *obj, SgenGrayQueue *queue)
 }
 
 static void
-SCAN_OBJECT_FUNCTION_NAME (GCObject *obj, mword desc, SgenGrayQueue *queue)
+SCAN_OBJECT_FUNCTION_NAME (GCObject *obj, SgenDescriptor desc, SgenGrayQueue *queue)
 {
        char *start = (char*)obj;
 
@@ -236,7 +236,7 @@ DRAIN_GRAY_STACK_FUNCTION_NAME (ScanCopyContext ctx)
 
        for (;;) {
                GCObject *obj;
-               mword desc;
+               SgenDescriptor desc;
 
                HEAVY_STAT (++stat_drain_loops);
 
index 855f92472486480530c93c06ea391cf7d6d0ce62..b2061da8ca18b15dce41354c0c054571493bf156 100644 (file)
@@ -52,7 +52,7 @@ extern guint64 stat_scan_object_called_major;
 #define ADD_TO_GLOBAL_REMSET(object,ptr,target)        mark_mod_union_card ((object), (void**)(ptr))
 
 static void
-major_scan_object_no_mark_concurrent_anywhere (GCObject *full_object, mword desc, SgenGrayQueue *queue)
+major_scan_object_no_mark_concurrent_anywhere (GCObject *full_object, SgenDescriptor desc, SgenGrayQueue *queue)
 {
        char *start = (char*)full_object;
 
@@ -73,13 +73,13 @@ major_scan_object_no_mark_concurrent_anywhere (GCObject *full_object, mword desc
 }
 
 static void
-major_scan_object_no_mark_concurrent_start (GCObject *start, mword desc, SgenGrayQueue *queue)
+major_scan_object_no_mark_concurrent_start (GCObject *start, SgenDescriptor desc, SgenGrayQueue *queue)
 {
        major_scan_object_no_mark_concurrent_anywhere (start, desc, queue);
 }
 
 static void
-major_scan_object_no_mark_concurrent (GCObject *start, mword desc, SgenGrayQueue *queue)
+major_scan_object_no_mark_concurrent (GCObject *start, SgenDescriptor desc, SgenGrayQueue *queue)
 {
        SGEN_ASSERT (0, !sgen_ptr_in_nursery (start), "Why are we scanning nursery objects in the concurrent collector?");
        major_scan_object_no_mark_concurrent_anywhere (start, desc, queue);
@@ -89,7 +89,7 @@ major_scan_object_no_mark_concurrent (GCObject *start, mword desc, SgenGrayQueue
 #define ADD_TO_GLOBAL_REMSET(object,ptr,target)        sgen_add_to_global_remset ((ptr), (target))
 
 static void
-major_scan_vtype_concurrent_finish (GCObject *full_object, char *start, mword desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
+major_scan_vtype_concurrent_finish (GCObject *full_object, char *start, SgenDescriptor desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
 {
        SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;
 
index 5bd452578d99e6d668e0b045caefd3a5a2380474..cda7746a44d8667b4403ae0f59a839b5d24df49c 100644 (file)
@@ -46,7 +46,7 @@ extern guint64 stat_scan_object_called_nursery;
        } while (0)
 
 static void
-SERIAL_SCAN_OBJECT (GCObject *object, mword desc, SgenGrayQueue *queue)
+SERIAL_SCAN_OBJECT (GCObject *object, SgenDescriptor desc, SgenGrayQueue *queue)
 {
        char *start = (char*)object;
 
@@ -66,7 +66,7 @@ SERIAL_SCAN_OBJECT (GCObject *object, mword desc, SgenGrayQueue *queue)
 }
 
 static void
-SERIAL_SCAN_VTYPE (GCObject *full_object, char *start, mword desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
+SERIAL_SCAN_VTYPE (GCObject *full_object, char *start, SgenDescriptor desc, SgenGrayQueue *queue BINARY_PROTOCOL_ARG (size_t size))
 {
        SGEN_OBJECT_LAYOUT_STATISTICS_DECLARE_BITMAP;