[Mono-bugs] [Bug 75444][Nor] Changed - [GMCS] bad generic method instantations performance

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Sun Jul 3 16:03:51 EDT 2005


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 malekith at pld-linux.org.

http://bugzilla.ximian.com/show_bug.cgi?id=75444

--- shadow/75444	2005-07-03 13:28:23.000000000 -0400
+++ shadow/75444.tmp.17380	2005-07-03 16:03:51.000000000 -0400
@@ -250,6 +250,36 @@
 ------- Additional Comments From malekith at pld-linux.org  2005-07-03 13:28 -------
 The full benchmark is here (I failed to attach it to bugzilla):
 
   http://nemerle.org/~malekith/temp/benchmark.tar.gz
 
 It contains the generic and nongeneric version, so one can compare them.
+
+------- Additional Comments From malekith at pld-linux.org  2005-07-03 16:03 -------
+Ha, got it! Mono did always set has_finalize for generic types.
+
+This:
+
+Index: metadata/class.c
+===================================================================
+--- metadata/class.c    (revision 46875)
++++ metadata/class.c    (working copy)
+@@ -1982,7 +1982,7 @@
+                /* Object::Finalize should have empty implemenatation */
+                class->has_finalize = 0;
+                if (class->parent) {
+-                       if (class->vtable [finalize_slot] !=
+default_finalize)
++                       if (class->vtable [finalize_slot]->token !=
+default_finalize->token)
+                                class->has_finalize = 1;
+                }
+
+fixes it, but I think that to be sure, we should also compare dynamic
+modules, not only tokens, so this shouldn't go into main mono tree I
+guess.
+
+Anyway the problem is that we have inflated Finalize copy.
+
+With this patch it takes only 10s for go2 to run, so it's now only 2x
+slower than non-generic version.
+


More information about the mono-bugs mailing list