Merge pull request #2305 from ludovic-henry/fix-threadpool-36414
[mono.git] / mono / metadata / marshal.h
index adeb350ddad31ff30ed6aaa362709af61e67c02f..40a23f7e102b1749224d0d97435a0d6470513130 100644 (file)
@@ -139,12 +139,17 @@ typedef struct {
        MonoMethod *method;
        /* For WRAPPER_SUBTYPE_RUNTIME_INVOKE_NORMAL */
        MonoMethodSignature *sig;
+       gboolean pass_rgctx;
 } RuntimeInvokeWrapperInfo;
 
 typedef struct {
        MonoMethod *method;
 } ManagedToNativeWrapperInfo;
 
+typedef struct {
+       MonoMethod *method;
+} SynchronizedWrapperInfo;
+
 typedef struct {
        MonoMethod *method;
 } SynchronizedInnerWrapperInfo;
@@ -165,6 +170,19 @@ typedef struct {
        MonoClass *klass;
 } ProxyWrapperInfo;
 
+typedef struct {
+       const char *gc_name;
+       int alloc_type;
+} AllocatorWrapperInfo;
+
+typedef struct {
+       MonoMethod *method;
+} UnboxWrapperInfo;
+
+typedef struct {
+       MonoMethod *method;
+} RemotingWrapperInfo;
+
 /*
  * This structure contains additional information to uniquely identify a given wrapper
  * method. It can be retrieved by mono_marshal_get_wrapper_info () for certain types
@@ -185,6 +203,8 @@ typedef struct {
                NativeToManagedWrapperInfo native_to_managed;
                /* MONO_WRAPPER_MANAGED_TO_NATIVE */
                ManagedToNativeWrapperInfo managed_to_native;
+               /* SYNCHRONIZED */
+               SynchronizedWrapperInfo synchronized;
                /* SYNCHRONIZED_INNER */
                SynchronizedInnerWrapperInfo synchronized_inner;
                /* GENERIC_ARRAY_HELPER */
@@ -195,6 +215,12 @@ typedef struct {
                ArrayAccessorWrapperInfo array_accessor;
                /* PROXY_ISINST etc. */
                ProxyWrapperInfo proxy;
+               /* ALLOC */
+               AllocatorWrapperInfo alloc;
+               /* UNBOX */
+               UnboxWrapperInfo unbox;
+               /* MONO_WRAPPER_REMOTING_INVOKE/MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK/MONO_WRAPPER_XDOMAIN_INVOKE */
+               RemotingWrapperInfo remoting;
        } d;
 } WrapperInfo;
 
@@ -294,9 +320,9 @@ WrapperInfo*
 mono_wrapper_info_create (MonoMethodBuilder *mb, WrapperSubtype subtype);
 
 void
-mono_marshal_set_wrapper_info (MonoMethod *method, gpointer data);
+mono_marshal_set_wrapper_info (MonoMethod *method, WrapperInfo *info);
 
-gpointer
+WrapperInfo*
 mono_marshal_get_wrapper_info (MonoMethod *wrapper);
 
 MonoMethod *
@@ -312,7 +338,7 @@ MonoMethod *
 mono_marshal_get_delegate_invoke_internal (MonoMethod *method, gboolean callvirt, gboolean static_method_with_first_arg_bound, MonoMethod *target_method);
 
 MonoMethod *
-mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean is_virtual);
+mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean is_virtual, gboolean pass_rgctx);
 
 MonoMethod*
 mono_marshal_get_runtime_invoke_dynamic (void);
@@ -485,10 +511,10 @@ gpointer
 ves_icall_System_Runtime_InteropServices_Marshal_ReAllocCoTaskMem (gpointer ptr, int size);
 
 void*
-ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal (int size);
+ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal (gpointer size);
 
 gpointer 
-ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal (gpointer ptr, int size);
+ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal (gpointer ptr, gpointer size);
 
 void
 ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal (void *ptr);