[runtime] Use the new one parameter ctor to create RuntimeWrappedException objects.
authorZoltan Varga <vargaz@gmail.com>
Thu, 22 Jan 2015 21:01:40 +0000 (16:01 -0500)
committerZoltan Varga <vargaz@gmail.com>
Thu, 22 Jan 2015 21:01:49 +0000 (16:01 -0500)
external/referencesource
mono/metadata/exception.c
mono/metadata/object-internals.h

index d6d006b726472eae6612ed1f48d4ec50832eeaef..10fc3eefe498291daf62f9c5d1358aac7fb1f45c 160000 (submodule)
@@ -1 +1 @@
-Subproject commit d6d006b726472eae6612ed1f48d4ec50832eeaef
+Subproject commit 10fc3eefe498291daf62f9c5d1358aac7fb1f45c
index cf42445fa784a86ebe6724fb74ab7a0e5c677a6e..23cb946b1ee4577ca102a9748953e0ce150473d8 100644 (file)
@@ -775,12 +775,25 @@ mono_get_exception_reflection_type_load (MonoArray *types, MonoArray *exceptions
 MonoException *
 mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception)
 {
-       MonoRuntimeWrappedException *ex = (MonoRuntimeWrappedException*)
-               mono_exception_from_name (mono_get_corlib (), "System.Runtime.CompilerServices",
-                                                                 "RuntimeWrappedException");
+       MonoClass *klass;
+       MonoObject *o;
+       MonoMethod *method;
+       MonoDomain *domain = mono_domain_get ();
+       gpointer params [16];
 
-   MONO_OBJECT_SETREF (ex, wrapped_exception, wrapped_exception);
-   return (MonoException*)ex;
+       klass = mono_class_from_name (mono_get_corlib (), "System.Runtime.CompilerServices", "RuntimeWrappedException");
+       g_assert (klass);
+
+       o = mono_object_new (domain, klass);
+       g_assert (o != NULL);
+
+       method = mono_class_get_method_from_name (klass, ".ctor", 1);
+       g_assert (method);
+
+       params [0] = wrapped_exception;
+       mono_runtime_invoke (method, o, params, NULL);
+
+       return (MonoException *)o;
 }      
 
 static gboolean
index 11bb021a36f609702de4cd6d494c7017b22ed56d..9266e9db2b155231427038ec485e52315f959aa7 100644 (file)
@@ -285,11 +285,6 @@ typedef struct {
        MonoString *type_name;
 } MonoTypeLoadException;
 
-typedef struct {
-       MonoException base;
-       MonoObject *wrapped_exception;
-} MonoRuntimeWrappedException;
-
 typedef struct {
        MonoObject   object;
        MonoObject  *async_state;