X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fgc-internals.h;h=76e73073dcca807abdc2cfe2d4101b2396f3bd65;hb=5968ff1992bf065887f5d54af4299f005517907f;hp=a11a2f5b501f476f8b3bd621c766d02088c8e89e;hpb=863ddf25bfb4e88db7225dd4968a4403840c42af;p=mono.git diff --git a/mono/metadata/gc-internals.h b/mono/metadata/gc-internals.h index a11a2f5b501..76e73073dcc 100644 --- a/mono/metadata/gc-internals.h +++ b/mono/metadata/gc-internals.h @@ -1,5 +1,6 @@ -/* - * metadata/gc-internals.h: Internal GC interface +/** + * \file + * Internal GC interface * * Author: Paolo Molaro * @@ -16,7 +17,6 @@ #include #include #include -#include #define mono_domain_finalizers_lock(domain) mono_os_mutex_lock (&(domain)->finalizable_objects_hash_lock); #define mono_domain_finalizers_unlock(domain) mono_os_mutex_unlock (&(domain)->finalizable_objects_hash_lock); @@ -169,15 +169,15 @@ void mono_gc_wbarrier_set_root (gpointer ptr, MonoObject *value); mono_gc_wbarrier_set_root (&((s)->fieldname), (MonoObject*)value); \ } while (0) -void mono_gc_finalize_threadpool_threads (void); - /* fast allocation support */ typedef enum { // Regular fast path allocator. MANAGED_ALLOCATOR_REGULAR, - // Managed allocator that just calls into the runtime. Used when allocation profiling w/ AOT. + // Managed allocator that just calls into the runtime. MANAGED_ALLOCATOR_SLOW_PATH, + // Managed allocator that works like the regular one but also calls into the profiler. + MANAGED_ALLOCATOR_PROFILER, } ManagedAllocatorVariant; int mono_gc_get_aligned_size_for_allocator (int size); @@ -195,7 +195,10 @@ MonoMethod* mono_gc_get_specific_write_barrier (gboolean is_concurrent); MonoMethod* mono_gc_get_write_barrier (void); /* Fast valuetype copy */ -void mono_gc_wbarrier_value_copy_bitmap (gpointer dest, gpointer src, int size, unsigned bitmap); +/* WARNING: [dest, dest + size] must be within the bounds of a single type, otherwise the GC will lose remset entries */ +void mono_gc_wbarrier_range_copy (gpointer dest, gpointer src, int size); +void* mono_gc_get_range_copy_func (void); + /* helper for the managed alloc support */ MonoString * @@ -350,6 +353,12 @@ void mono_gc_register_altstack (gpointer stack, gint32 stack_size, gpointer alts gboolean mono_gc_is_critical_method (MonoMethod *method); +gpointer mono_gc_thread_attach (THREAD_INFO_TYPE *info); + +void mono_gc_thread_detach_with_lock (THREAD_INFO_TYPE *info); + +gboolean mono_gc_thread_in_critical_region (THREAD_INFO_TYPE *info); + /* If set, print debugging messages around finalizers. */ extern gboolean log_finalizers;