Merge pull request #2619 from directhex/dont_remap_npgsql
[mono.git] / mono / metadata / sgen-toggleref.c
index 94c11ddc0b612a5056ccb7ee5e74067930157885..d9afbfa868dc9efe8a6a2eb0a31c151bb82215e2 100644 (file)
@@ -32,8 +32,8 @@
 
 /*only one of the two can be non null at a given time*/
 typedef struct {
-       void *strong_ref;
-       void *weak_ref;
+       GCObject *strong_ref;
+       GCObject *weak_ref;
 } MonoGCToggleRef;
 
 static MonoToggleRefStatus (*toggleref_callback) (MonoObject *obj);
@@ -101,14 +101,14 @@ void sgen_client_mark_togglerefs (char *start, char *end, ScanCopyContext ctx)
 
        for (i = 0; i < toggleref_array_size; ++i) {
                if (toggleref_array [i].strong_ref) {
-                       char *object = toggleref_array [i].strong_ref;
-                       if (object >= start && object < end) {
+                       GCObject *object = toggleref_array [i].strong_ref;
+                       if ((char*)object >= start && (char*)object < end) {
                                SGEN_LOG (6, "\tcopying strong slot %d", i);
                                copy_func (&toggleref_array [i].strong_ref, queue);
                        }
                }
        }
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
 }
 
 void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx)
@@ -121,9 +121,9 @@ void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx)
 
        for (i = 0; i < toggleref_array_size; ++i) {
                if (toggleref_array [i].weak_ref) {
-                       char *object = toggleref_array [i].weak_ref;
+                       GCObject *object = toggleref_array [i].weak_ref;
 
-                       if (object >= start && object < end) {
+                       if ((char*)object >= start && (char*)object < end) {
                                if (sgen_gc_is_object_ready_for_finalization (object)) {
                                        SGEN_LOG (6, "\tcleaning weak slot %d", i);
                                        toggleref_array [i].weak_ref = NULL; /* We defer compaction to only happen on the callback step. */
@@ -134,7 +134,7 @@ void sgen_client_clear_togglerefs (char *start, char *end, ScanCopyContext ctx)
                        }
                }
        }
-       sgen_drain_gray_stack (-1, ctx);
+       sgen_drain_gray_stack (ctx);
 }
 
 static void
@@ -142,7 +142,7 @@ ensure_toggleref_capacity (int capacity)
 {
        if (!toggleref_array) {
                toggleref_array_capacity = 32;
-               toggleref_array = sgen_alloc_internal_dynamic (
+               toggleref_array = (MonoGCToggleRef *)sgen_alloc_internal_dynamic (
                        toggleref_array_capacity * sizeof (MonoGCToggleRef),
                        INTERNAL_MEM_TOGGLEREF_DATA,
                        TRUE);
@@ -153,7 +153,7 @@ ensure_toggleref_capacity (int capacity)
                while (toggleref_array_capacity < toggleref_array_size + capacity)
                        toggleref_array_capacity *= 2;
 
-               tmp = sgen_alloc_internal_dynamic (
+               tmp = (MonoGCToggleRef *)sgen_alloc_internal_dynamic (
                        toggleref_array_capacity * sizeof (MonoGCToggleRef),
                        INTERNAL_MEM_TOGGLEREF_DATA,
                        TRUE);
@@ -210,7 +210,7 @@ static MonoToggleRefStatus
 test_toggleref_callback (MonoObject *obj)
 {
        static MonoClassField *mono_toggleref_test_field;
-       int status = MONO_TOGGLE_REF_DROP;
+       MonoToggleRefStatus status = MONO_TOGGLE_REF_DROP;
 
        if (!mono_toggleref_test_field) {
                mono_toggleref_test_field = mono_class_get_field_from_name (mono_object_get_class (obj), "__test");