g_free (ptr);
}
-void
+
+/**
+ * mono_set_allocator_vtable
+ *
+ * Make the runtime use the functions in @vtable for allocating memory.
+ * The provided functions must have the same semantics of their libc's equivalents.
+ *
+ * @return TRUE is the vtable was installed. FALSE if the version is incompatible.
+ */
+mono_bool
mono_set_allocator_vtable (MonoAllocatorVTable* vtable)
{
+ if (vtable->version != MONO_ALLOCATOR_VTABLE_VERSION)
+ return FALSE;
GMemVTable g_mem_vtable = { vtable->malloc, vtable->realloc, vtable->free, vtable->calloc};
g_mem_set_vtable (&g_mem_vtable);
+ return TRUE;
}
MONO_API void mono_free (void *);
+#define MONO_ALLOCATOR_VTABLE_VERSION 1
+
+typedef struct {
+ int version;
+ void *(*malloc) (size_t size);
+ void *(*realloc) (void *mem, size_t count);
+ void (*free) (void *mem);
+ void *(*calloc) (size_t count, size_t size);
+} MonoAllocatorVTable;
+
+MONO_API mono_bool
+mono_set_allocator_vtable (MonoAllocatorVTable* vtable);
+
+
#define MONO_CONST_RETURN const
/*