2006-08-17 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / metadata / null-gc.c
1 /*
2  * null-gc.c: GC implementation using malloc: will leak everything, just for testing.
3  *
4  */
5
6 #include "config.h"
7 #include <glib.h>
8 #include <mono/metadata/mono-gc.h>
9 #include <mono/metadata/gc-internal.h>
10
11 #ifdef HAVE_NULL_GC
12
13 void
14 mono_gc_collect (int generation)
15 {
16 }
17
18 int
19 mono_gc_max_generation (void)
20 {
21         return 0;
22 }
23
24 /* maybe track the size, not important, though */
25 gint64
26 mono_gc_get_used_size (void)
27 {
28         return 1024*1024;
29 }
30
31 gint64
32 mono_gc_get_heap_size (void)
33 {
34         return 2*1024*1024;
35 }
36
37 void
38 mono_gc_disable (void)
39 {
40 }
41
42 void
43 mono_gc_enable (void)
44 {
45 }
46
47 gboolean
48 mono_gc_is_gc_thread (void)
49 {
50         return TRUE;
51 }
52
53 gboolean
54 mono_gc_register_thread (void *baseptr)
55 {
56         return TRUE;
57 }
58
59 gboolean
60 mono_object_is_alive (MonoObject* o)
61 {
62         return TRUE;
63 }
64
65 void
66 mono_gc_enable_events (void)
67 {
68 }
69
70 void
71 mono_gc_weak_link_add (void **link_addr, MonoObject *obj)
72 {
73         *link_addr = obj;
74 }
75
76 void
77 mono_gc_weak_link_remove (void **link_addr)
78 {
79         *link_addr = NULL;
80 }
81
82 MonoObject*
83 mono_gc_weak_link_get (void **link_addr)
84 {
85         return *link_addr;
86 }
87
88 void*
89 mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
90 {
91         return NULL;
92 }
93
94 void*
95 mono_gc_alloc_fixed (size_t size, void *descr)
96 {
97         return g_malloc0 (size);
98 }
99
100 void
101 mono_gc_free_fixed (void* addr)
102 {
103         g_free (addr);
104 }
105
106 void
107 mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
108 {
109         *(void**)field_ptr = value;
110 }
111
112 void
113 mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
114 {
115         *(void**)slot_ptr = value;
116 }
117
118 void
119 mono_gc_wbarrier_arrayref_copy (MonoArray *arr, gpointer slot_ptr, int count)
120 {
121         /* no need to do anything */
122 }
123
124 void
125 mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
126 {
127         *(void**)ptr = value;
128 }
129
130 void
131 mono_gc_wbarrier_value_copy (gpointer dest, gpointer src, int count, MonoClass *klass)
132 {
133 }
134
135 #endif
136