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);