Merge pull request #2802 from BrzVlad/feature-evacuation-opt2
[mono.git] / mono / metadata / null-gc.c
index b33437dc18ec0653939dcf7d0288a7d68b781724..7f904f3dec7b08970d31c3b3f6161c8489aed3b7 100644 (file)
@@ -4,12 +4,13 @@
  * Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
  * Copyright 2004-2011 Novell, Inc (http://www.novell.com)
  * Copyright 2011 Xamarin, Inc (http://www.xamarin.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
  */
 
 #include "config.h"
 #include <glib.h>
 #include <mono/metadata/mono-gc.h>
-#include <mono/metadata/gc-internal.h>
+#include <mono/metadata/gc-internals.h>
 #include <mono/metadata/runtime.h>
 #include <mono/utils/atomic.h>
 #include <mono/utils/mono-threads.h>
@@ -36,6 +37,11 @@ mono_gc_base_init (void)
        mono_thread_info_attach (&dummy);
 }
 
+void
+mono_gc_base_cleanup (void)
+{
+}
+
 void
 mono_gc_collect (int generation)
 {
@@ -106,8 +112,13 @@ mono_gc_enable_events (void)
 {
 }
 
+void
+mono_gc_enable_alloc_events (void)
+{
+}
+
 int
-mono_gc_register_root (char *start, size_t size, void *descr)
+mono_gc_register_root (char *start, size_t size, void *descr, MonoGCRootSource source, const char *msg)
 {
        return TRUE;
 }
@@ -166,7 +177,7 @@ mono_gc_make_root_descr_all_refs (int numbits)
 }
 
 void*
-mono_gc_alloc_fixed (size_t size, void *descr)
+mono_gc_alloc_fixed (size_t size, void *descr, MonoGCRootSource source, const char *msg)
 {
        return g_malloc0 (size);
 }
@@ -177,6 +188,65 @@ mono_gc_free_fixed (void* addr)
        g_free (addr);
 }
 
+void *
+mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
+{
+       MonoObject *obj = calloc (1, size);
+
+       obj->vtable = vtable;
+
+       return obj;
+}
+
+void *
+mono_gc_alloc_vector (MonoVTable *vtable, size_t size, uintptr_t max_length)
+{
+       MonoArray *obj = calloc (1, size);
+
+       obj->obj.vtable = vtable;
+       obj->max_length = max_length;
+
+       return obj;
+}
+
+void *
+mono_gc_alloc_array (MonoVTable *vtable, size_t size, uintptr_t max_length, uintptr_t bounds_size)
+{
+       MonoArray *obj = calloc (1, size);
+
+       obj->obj.vtable = vtable;
+       obj->max_length = max_length;
+
+       if (bounds_size)
+               obj->bounds = (MonoArrayBounds *) ((char *) obj + size - bounds_size);
+
+       return obj;
+}
+
+void *
+mono_gc_alloc_string (MonoVTable *vtable, size_t size, gint32 len)
+{
+       MonoString *obj = calloc (1, size);
+
+       obj->object.vtable = vtable;
+       obj->length = len;
+       obj->chars [len] = 0;
+
+       return obj;
+}
+
+void*
+mono_gc_alloc_mature (MonoVTable *vtable, size_t size)
+{
+       return mono_gc_alloc_obj (vtable, size);
+}
+
+void*
+mono_gc_alloc_pinned_obj (MonoVTable *vtable, size_t size)
+{
+       return mono_gc_alloc_obj (vtable, size);
+}
+
 void
 mono_gc_wbarrier_set_field (MonoObject *obj, gpointer field_ptr, MonoObject* value)
 {
@@ -251,7 +321,7 @@ mono_gc_get_managed_array_allocator (MonoClass *klass)
 }
 
 MonoMethod*
-mono_gc_get_managed_allocator_by_type (int atype)
+mono_gc_get_managed_allocator_by_type (int atype, gboolean slowpath)
 {
        return NULL;
 }
@@ -461,7 +531,7 @@ BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reser
 #endif
 
 guint
-mono_gc_get_vtable_bits (MonoClass *class)
+mono_gc_get_vtable_bits (MonoClass *klass)
 {
        return 0;
 }
@@ -472,7 +542,7 @@ mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer altstack,
 }
 
 gboolean
-mono_gc_set_allow_synchronous_major (gboolean flag)
+mono_gc_is_null (void)
 {
        return TRUE;
 }