Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.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 int
25 mono_gc_get_generation  (MonoObject *object)
26 {
27         return 0;
28 }
29
30 int
31 mono_gc_collection_count (int generation)
32 {
33         return 0;
34 }
35
36 void
37 mono_gc_add_memory_pressure (gint64 value)
38 {
39 }
40
41 /* maybe track the size, not important, though */
42 gint64
43 mono_gc_get_used_size (void)
44 {
45         return 1024*1024;
46 }
47
48 gint64
49 mono_gc_get_heap_size (void)
50 {
51         return 2*1024*1024;
52 }
53
54 void
55 mono_gc_disable (void)
56 {
57 }
58
59 void
60 mono_gc_enable (void)
61 {
62 }
63
64 gboolean
65 mono_gc_is_gc_thread (void)
66 {
67         return TRUE;
68 }
69
70 gboolean
71 mono_gc_register_thread (void *baseptr)
72 {
73         return TRUE;
74 }
75
76 gboolean
77 mono_object_is_alive (MonoObject* o)
78 {
79         return TRUE;
80 }
81
82 void
83 mono_gc_enable_events (void)
84 {
85 }
86
87 void
88 mono_gc_weak_link_add (void **link_addr, MonoObject *obj)
89 {
90         *link_addr = obj;
91 }
92
93 void
94 mono_gc_weak_link_remove (void **link_addr)
95 {
96         *link_addr = NULL;
97 }
98
99 MonoObject*
100 mono_gc_weak_link_get (void **link_addr)
101 {
102         return *link_addr;
103 }
104
105 void*
106 mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits)
107 {
108         return NULL;
109 }
110
111 void*
112 mono_gc_alloc_fixed (size_t size, void *descr)
113 {
114         return g_malloc0 (size);
115 }
116
117 void
118 mono_gc_free_fixed (void* addr)
119 {
120         g_free (addr);
121 }
122
123 void
124 mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
125 {
126         *(void**)field_ptr = value;
127 }
128
129 void
130 mono_gc_wbarrier_set_arrayref (MonoArray *arr, gpointer slot_ptr, MonoObject* value)
131 {
132         *(void**)slot_ptr = value;
133 }
134
135 void
136 mono_gc_wbarrier_arrayref_copy (MonoArray *arr, gpointer slot_ptr, int count)
137 {
138         /* no need to do anything */
139 }
140
141 void
142 mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
143 {
144         *(void**)ptr = value;
145 }
146
147 void
148 mono_gc_wbarrier_value_copy (gpointer dest, gpointer src, int count, MonoClass *klass)
149 {
150 }
151
152 void
153 mono_gc_wbarrier_object (MonoObject* obj)
154 {
155 }
156
157 MonoMethod*
158 mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
159 {
160         return NULL;
161 }
162
163 int
164 mono_gc_get_managed_allocator_type (MonoMethod *managed_alloc)
165 {
166         return -1;
167 }
168
169 MonoMethod*
170 mono_gc_get_managed_allocator_by_type (int atype)
171 {
172         return NULL;
173 }
174
175 #endif
176