X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fnull-gc.c;h=86a2528b09f62a876d48a9d513c1c8364975350b;hb=6be4932222cb6231727d02561967101332fdc2a8;hp=d323b9b54b0578aae654a2c85798c737e8d8b11a;hpb=7fc6f16909df8e0322a12a5cb46552ff59765c8c;p=mono.git diff --git a/mono/metadata/null-gc.c b/mono/metadata/null-gc.c index d323b9b54b0..86a2528b09f 100644 --- a/mono/metadata/null-gc.c +++ b/mono/metadata/null-gc.c @@ -2,19 +2,29 @@ * null-gc.c: GC implementation using malloc: will leak everything, just for testing. * * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) - * Copyright 2004-2009 Novell, Inc (http://www.novell.com) + * Copyright 2004-2011 Novell, Inc (http://www.novell.com) + * Copyright 2011 Xamarin, Inc (http://www.xamarin.com) */ #include "config.h" #include #include #include +#include +#include #ifdef HAVE_NULL_GC void mono_gc_base_init (void) { + MonoThreadInfoCallbacks cb; + + memset (&cb, 0, sizeof (cb)); + cb.mono_method_is_critical = mono_runtime_is_critical_method; + cb.mono_gc_pthread_create = (gpointer)mono_gc_pthread_create; + + mono_threads_init (&cb, sizeof (MonoThreadInfo)); } void @@ -58,16 +68,6 @@ mono_gc_get_heap_size (void) return 2*1024*1024; } -void -mono_gc_disable (void) -{ -} - -void -mono_gc_enable (void) -{ -} - gboolean mono_gc_is_gc_thread (void) { @@ -115,7 +115,7 @@ mono_gc_weak_link_add (void **link_addr, MonoObject *obj, gboolean track) } void -mono_gc_weak_link_remove (void **link_addr) +mono_gc_weak_link_remove (void **link_addr, gboolean track) { *link_addr = NULL; } @@ -192,6 +192,12 @@ mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value) *(void**)ptr = value; } +void +mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value) +{ + InterlockedWritePointer (ptr, value); +} + void mono_gc_wbarrier_generic_nostore (gpointer ptr) { @@ -218,13 +224,13 @@ mono_gc_is_critical_method (MonoMethod *method) } MonoMethod* -mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box) +mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box) { return NULL; } MonoMethod* -mono_gc_get_managed_array_allocator (MonoVTable *vtable, int rank) +mono_gc_get_managed_array_allocator (MonoClass *klass) { return NULL; } @@ -328,12 +334,24 @@ mono_gc_get_card_table (int *shift_bits, gpointer *card_mask) return NULL; } +gboolean +mono_gc_card_table_nursery_check (void) +{ + g_assert_not_reached (); + return TRUE; +} + void* mono_gc_get_nursery (int *shift_bits, size_t *size) { return NULL; } +void +mono_gc_set_current_thread_appdomain (MonoDomain *domain) +{ +} + gboolean mono_gc_precise_stack_mark_enabled (void) { @@ -371,12 +389,36 @@ mono_gc_set_gc_callbacks (MonoGCCallbacks *callbacks) { } +void +mono_gc_set_stack_end (void *stack_end) +{ +} + +int +mono_gc_get_los_limit (void) +{ + return G_MAXINT; +} + +gboolean +mono_gc_user_markers_supported (void) +{ + return FALSE; +} + +void * +mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker) +{ + g_assert_not_reached (); + return NULL; +} + #ifndef HOST_WIN32 int mono_gc_pthread_create (pthread_t *new_thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) { - return mono_threads_pthread_create (new_thread, attr, start_routine, arg); + return pthread_create (new_thread, attr, start_routine, arg); } int @@ -391,6 +433,15 @@ mono_gc_pthread_detach (pthread_t thread) return pthread_detach (thread); } +void +mono_gc_pthread_exit (void *retval) +{ + pthread_exit (retval); +} + +void mono_gc_set_skip_thread (gboolean value) +{ +} #endif #ifdef HOST_WIN32 @@ -400,4 +451,21 @@ BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reser } #endif +guint +mono_gc_get_vtable_bits (MonoClass *class) +{ + return 0; +} + +void +mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack, gint32 altstack_size) +{ +} + +gboolean +mono_gc_set_allow_synchronous_major (gboolean flag) +{ + return TRUE; +} + #endif