Please do not reply to this email- if you want to comment on the bug, go to the URL shown below and enter your comments there.
Changed by [EMAIL PROTECTED] http://bugzilla.ximian.com/show_bug.cgi?id=80969 --- shadow/80969 2007-04-23 09:28:25.000000000 -0400 +++ shadow/80969.tmp.24126 2007-04-23 10:13:18.000000000 -0400 @@ -83,6 +83,47 @@ Attached potential patch. It's fixes this bug and it's duplicate. It is overly agressive in that it doesn't cache multidimensional array methods when in the presence of a generic context, even if the context has nothing to do with the array type. But, I ran some performance tests and it didn't seem to have much effect. This is very simple but perhaps incorrect if I am missing something. + +------- Additional Comments From [EMAIL PROTECTED] 2007-04-23 10:13 ------- +I don't think this patch is complete as it doesn't cover all the +possible cases. + +Key problem is this: + +====== + .method /*06000002*/ public hidebysig instance void + Test() cil managed + { + // Code size 20 (0x14) + .maxstack 7 + .locals /*11000001*/ init (!T[,] V_0) + IL_0000: ldc.i4.0 + IL_0001: ldc.i4.0 + IL_0002: newobj instance void !T[,]/*1B000001*/::.ctor(int32, + int32) +/* 0A000002 */ + IL_0007: stloc.0 + IL_0008: ldloc.0 + IL_0009: callvirt instance class +[mscorlib/*23000001*/]System.Type/*01000002*/ +[mscorlib/*23000001*/]System.Object/*01000001*/::GetType() /* 0A000003 */ + IL_000e: call void +[mscorlib/*23000001*/]System.Console/*01000003*/::WriteLine(object) /* +0A000004 */ + IL_0013: ret + } // end of method C`1::Test +===== + +Look at IL_0002: here mono_get_method_full() is called to decode a +MemberRef 0A000003. + +This MemberRef has a MONO_MEMBERREF_PARENT_TYPESPEC pointing to the +generic class T[,]. However, this class is fully inflated in +method_from_memberref() to System.String[,] so we search the method in +that class and thus it's not inflated. + +So I think for a correct fix, we need to check whether we actually +used the context or not. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
