Rename checked build assertion_fail to mono_fatal_with_history, use in more places
[mono.git] / mono / utils / lock-free-queue.c
index 9a84edfedf8809c442d1562a6ee3a9bfe46e4441..b0076c6d18441ade1e6d345282b60652a5f3c57e 100644 (file)
@@ -57,9 +57,9 @@
 
 #include <mono/utils/lock-free-queue.h>
 
-#define INVALID_NEXT   ((void*)-1)
-#define END_MARKER     ((void*)-2)
-#define FREE_NEXT      ((void*)-3)
+#define INVALID_NEXT   ((MonoLockFreeQueueNode *volatile)-1)
+#define END_MARKER     ((MonoLockFreeQueueNode *volatile)-2)
+#define FREE_NEXT      ((MonoLockFreeQueueNode *volatile)-3)
 
 void
 mono_lock_free_queue_init (MonoLockFreeQueue *q)
@@ -113,7 +113,7 @@ mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node)
        for (;;) {
                MonoLockFreeQueueNode *next;
 
-               tail = get_hazardous_pointer ((gpointer volatile*)&q->tail, hp, 0);
+               tail = (MonoLockFreeQueueNode *) get_hazardous_pointer ((gpointer volatile*)&q->tail, hp, 0);
                mono_memory_read_barrier ();
                /*
                 * We never dereference next so we don't need a
@@ -157,7 +157,7 @@ mono_lock_free_queue_enqueue (MonoLockFreeQueue *q, MonoLockFreeQueueNode *node)
 static void
 free_dummy (gpointer _dummy)
 {
-       MonoLockFreeQueueDummy *dummy = _dummy;
+       MonoLockFreeQueueDummy *dummy = (MonoLockFreeQueueDummy *) _dummy;
        mono_lock_free_queue_node_free (&dummy->node);
        g_assert (dummy->in_use);
        mono_memory_write_barrier ();
@@ -218,7 +218,7 @@ mono_lock_free_queue_dequeue (MonoLockFreeQueue *q)
        for (;;) {
                MonoLockFreeQueueNode *tail, *next;
 
-               head = get_hazardous_pointer ((gpointer volatile*)&q->head, hp, 0);
+               head = (MonoLockFreeQueueNode *) get_hazardous_pointer ((gpointer volatile*)&q->head, hp, 0);
                tail = (MonoLockFreeQueueNode*)q->tail;
                mono_memory_read_barrier ();
                next = head->next;
@@ -286,7 +286,7 @@ mono_lock_free_queue_dequeue (MonoLockFreeQueue *q)
                g_assert (q->has_dummy);
                q->has_dummy = 0;
                mono_memory_write_barrier ();
-               mono_thread_hazardous_free_or_queue (head, free_dummy, FALSE, TRUE);
+               mono_thread_hazardous_free_or_queue (head, free_dummy, HAZARD_FREE_NO_LOCK, HAZARD_FREE_ASYNC_CTX);
                if (try_reenqueue_dummy (q))
                        goto retry;
                return NULL;