X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fnull-gc.c;h=d791744dd05833825c1315545e09a9b756e7cc07;hb=HEAD;hp=9ea87bd844c51a3efaf775a8b159251b1271fc2f;hpb=fee5ece80556eb45d16da5f6c0fde991e5af1d40;p=mono.git diff --git a/mono/metadata/null-gc.c b/mono/metadata/null-gc.c index 9ea87bd844c..d791744dd05 100644 --- a/mono/metadata/null-gc.c +++ b/mono/metadata/null-gc.c @@ -1,5 +1,6 @@ -/* - * null-gc.c: GC implementation using malloc: will leak everything, just for testing. +/** + * \file + * GC implementation using malloc: will leak everything, just for testing. * * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com) * Copyright 2004-2011 Novell, Inc (http://www.novell.com) @@ -12,17 +13,21 @@ #include #include #include +#include #include #include #include +#include #ifdef HAVE_NULL_GC +static gboolean gc_inited = FALSE; + void mono_gc_base_init (void) { - MonoThreadInfoCallbacks cb; - int dummy; + if (gc_inited) + return; mono_counters_init (); @@ -30,15 +35,14 @@ mono_gc_base_init (void) mono_w32handle_init (); #endif - memset (&cb, 0, sizeof (cb)); - /* TODO: This casts away an incompatible pointer type warning in the same - manner that boehm-gc does it. This is probably worth investigating - more carefully. */ - cb.mono_method_is_critical = (gpointer)mono_runtime_is_critical_method; + mono_thread_callbacks_init (); + mono_thread_info_init (sizeof (MonoThreadInfo)); + + mono_thread_info_attach (); - mono_threads_init (&cb, sizeof (MonoThreadInfo)); + null_gc_handles_init (); - mono_thread_info_attach (&dummy); + gc_inited = TRUE; } void @@ -93,12 +97,6 @@ mono_gc_is_gc_thread (void) return TRUE; } -gboolean -mono_gc_register_thread (void *baseptr) -{ - return TRUE; -} - int mono_gc_walk_heap (int flags, MonoGCReferences callback, void *data) { @@ -122,24 +120,6 @@ mono_gc_deregister_root (char* addr) { } -void -mono_gc_weak_link_add (void **link_addr, MonoObject *obj, gboolean track) -{ - *link_addr = obj; -} - -void -mono_gc_weak_link_remove (void **link_addr, gboolean track) -{ - *link_addr = NULL; -} - -MonoObject* -mono_gc_weak_link_get (void **link_addr) -{ - return *link_addr; -} - void* mono_gc_make_descr_for_string (gsize *bitmap, int numbits) { @@ -164,6 +144,12 @@ mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits) return NULL; } +void* +mono_gc_make_vector_descr (void) +{ + return NULL; +} + void* mono_gc_make_root_descr_all_refs (int numbits) { @@ -296,6 +282,25 @@ mono_gc_is_critical_method (MonoMethod *method) return FALSE; } +gpointer +mono_gc_thread_attach (MonoThreadInfo* info) +{ + info->handle_stack = mono_handle_stack_alloc (); + return info; +} + +void +mono_gc_thread_detach_with_lock (MonoThreadInfo *p) +{ + mono_handle_stack_free (p->handle_stack); +} + +gboolean +mono_gc_thread_in_critical_region (MonoThreadInfo *info) +{ + return FALSE; +} + int mono_gc_get_aligned_size_for_allocator (int size) { @@ -332,27 +337,6 @@ mono_gc_get_gc_name (void) return "null"; } -void -mono_gc_add_weak_track_handle (MonoObject *obj, guint32 gchandle) -{ -} - -void -mono_gc_change_weak_track_handle (MonoObject *old_obj, MonoObject *obj, guint32 gchandle) -{ -} - -void -mono_gc_remove_weak_track_handle (guint32 gchandle) -{ -} - -GSList* -mono_gc_remove_weak_track_object (MonoDomain *domain, MonoObject *obj) -{ - return NULL; -} - void mono_gc_clear_domain (MonoDomain *domain) { @@ -419,11 +403,17 @@ mono_gc_is_disabled (void) } void -mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap) +mono_gc_wbarrier_range_copy (gpointer _dest, gpointer _src, int size) { g_assert_not_reached (); } +void* +mono_gc_get_range_copy_func (void) +{ + return &mono_gc_wbarrier_range_copy; +} + guint8* mono_gc_get_card_table (int *shift_bits, gpointer *card_mask) { @@ -550,6 +540,19 @@ mono_gc_is_null (void) { return TRUE; } + +int +mono_gc_invoke_finalizers (void) +{ + return 0; +} + +MonoBoolean +mono_gc_pending_finalizers (void) +{ + return FALSE; +} + #else MONO_EMPTY_SOURCE_FILE (null_gc);