[mono/mono] e65c8b1c: Fix gsharedvt support for gsharedvt methods on shared classes. Fixes #11933.

9 views
Skip to first unread message

Zoltan Varga (vargaz@gmail.com)

unread,
Apr 24, 2013, 11:07:42 AM4/24/13
to Mono Patches List

Branch: refs/heads/master
Home: https://github.com/mono/mono
Compare: https://github.com/mono/mono/compare/c018aea7e916...e65c8b1ca04e

Commit: e65c8b1ca04ea05ba66df2b61ca25a35c98d23a6
Author: Zoltan Varga <var...@gmail.com> (vargaz)
Date: 2013-04-24 15:01:33 GMT
URL: https://github.com/mono/mono/commit/e65c8b1ca04ea05ba66df2b61ca25a35c98d23a6

Fix gsharedvt support for gsharedvt methods on shared classes. Fixes #11933.

Changed paths:
M mono/mini/gshared.cs
M mono/mini/mini.c

Modified: mono/mini/gshared.cs
===================================================================
@@ -1086,4 +1086,18 @@ class Class6 : IFace6 {
return 0;
}

+ public class TAbstractTableItem<TC> {
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ public static void SetProperty<TV> () { }
+
+ [MethodImplAttribute (MethodImplOptions.NoInlining)]
+ public static void Test () {
+ SetProperty<bool> ();
+ }
+ }
+
+ public static int test_0_gsharedvt_method_on_shared_class () {
+ TAbstractTableItem<object>.Test ();
+ return 0;
+ }
}

Modified: mono/mini/mini.c
===================================================================
@@ -4447,7 +4447,7 @@ void *mono_global_codeman_reserve (int size)
gboolean gsharedvt = FALSE;
MonoGenericContainer *class_container, *method_container = NULL;

- if (method->is_generic || method->klass->generic_container) {
+ if (method->is_generic || (method->klass->generic_container && !method->is_inflated)) {
declaring_method = method;
} else {
declaring_method = mono_method_get_declaring_generic_method (method);


Reply all
Reply to author
Forward
0 new messages