return delegate;
}
+typedef int DelegateByrefDelegate (void *);
+
+LIBTEST_API int STDCALL
+mono_test_marshal_delegate_ref_delegate (DelegateByrefDelegate del)
+{
+ int (*ptr) (int i);
+
+ del (&ptr);
+
+ return ptr (54);
+}
+
static int STDCALL
return_plus_one (int i)
{
return lookup_mono_symbol (symbol_name);
}
-#define MONO_BEGIN_EFRAME { void *__region_cookie = mono_threads_enter_gc_unsafe_region ? mono_threads_enter_gc_unsafe_region () : NULL;
-#define MONO_END_EFRAME if (mono_threads_exit_gc_unsafe_region) mono_threads_exit_gc_unsafe_region (__region_cookie); }
+#define MONO_BEGIN_EFRAME { void *__dummy; void *__region_cookie = mono_threads_enter_gc_unsafe_region ? mono_threads_enter_gc_unsafe_region (&__dummy) : NULL;
+#define MONO_END_EFRAME if (mono_threads_exit_gc_unsafe_region) mono_threads_exit_gc_unsafe_region (__region_cookie, &__dummy); }
/**
* test_method_thunk:
gpointer (*mono_object_unbox)(gpointer)
= lookup_mono_symbol ("mono_object_unbox");
- gpointer* (*mono_threads_enter_gc_unsafe_region) ()
+ gpointer (*mono_threads_enter_gc_unsafe_region) (gpointer)
= lookup_mono_symbol ("mono_threads_enter_gc_unsafe_region");
- gpointer (*mono_threads_exit_gc_unsafe_region) (gpointer *)
+ void (*mono_threads_exit_gc_unsafe_region) (gpointer, gpointer)
= lookup_mono_symbol ("mono_threads_exit_gc_unsafe_region");