[marshal] Change mono_delegate_ctor to use coop handles
authorAleksey Kliger <aleksey@xamarin.com>
Thu, 11 May 2017 18:17:22 +0000 (14:17 -0400)
committerAleksey Kliger <aleksey@xamarin.com>
Tue, 23 May 2017 15:30:48 +0000 (11:30 -0400)
mono/metadata/object-internals.h
mono/metadata/object.c
mono/mini/jit-icalls.c

index 933adf218ff461109306d42dd32adad8793918cc..18e092cf384984fbee5959650f99b7ab618ccfc2 100644 (file)
@@ -661,7 +661,7 @@ gboolean
 mono_delegate_ctor_with_method_fixme (MonoObject *this_obj, MonoObject *target, gpointer addr, MonoMethod *method, MonoError *error);
 
 gboolean
-mono_delegate_ctor         (MonoObject *this_obj, MonoObject *target, gpointer addr, MonoError *error);
+mono_delegate_ctor         (MonoObjectHandle this_obj, MonoObjectHandle target, gpointer addr, MonoError *error);
 
 void*
 mono_class_get_allocation_ftn (MonoVTable *vtable, gboolean for_box, gboolean *pass_size_in_words);
index e0712a91b240d9148254e2e93cbd3d8dd39ed384..e0ed53e80df7828619ca5d5518559b1f4770a85a 100644 (file)
@@ -7879,7 +7879,7 @@ mono_delegate_ctor_with_method (MonoObjectHandle this_obj, MonoObjectHandle targ
  * On failure returns FALSE and sets \p error.
  */
 gboolean
-mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr, MonoError *error)
+mono_delegate_ctor (MonoObjectHandle this_obj, MonoObjectHandle target, gpointer addr, MonoError *error)
 {
        MONO_REQ_GC_UNSAFE_MODE;
 
@@ -7899,7 +7899,7 @@ mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr, Mon
                g_assert (!mono_class_is_gtd (method->klass));
        }
 
-       return mono_delegate_ctor_with_method_fixme (this_obj, target, addr, method, error);
+       return mono_delegate_ctor_with_method (this_obj, target, addr, method, error);
 }
 
 /**
index 401ac247e2a0569fb100aa530f9df08cb1682c03..648e69cf18cc49cff4c27e6ee517637df2d83a68 100644 (file)
@@ -1458,11 +1458,15 @@ mono_generic_class_init (MonoVTable *vtable)
 }
 
 void
-ves_icall_mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr)
+ves_icall_mono_delegate_ctor (MonoObject *this_obj_raw, MonoObject *target_raw, gpointer addr)
 {
+       HANDLE_FUNCTION_ENTER ();
        MonoError error;
+       MONO_HANDLE_DCL (MonoObject, this_obj);
+       MONO_HANDLE_DCL (MonoObject, target);
        mono_delegate_ctor (this_obj, target, addr, &error);
        mono_error_set_pending_exception (&error);
+       HANDLE_FUNCTION_RETURN ();
 }
 
 gpointer