In .:
authorRodrigo Kumpera <kumpera@gmail.com>
Fri, 27 Jun 2008 21:12:10 +0000 (21:12 -0000)
committerRodrigo Kumpera <kumpera@gmail.com>
Fri, 27 Jun 2008 21:12:10 +0000 (21:12 -0000)
2008-06-27  Rodrigo Kumpera  <rkumpera@novell.com>

* Exception.cs: Build method traces using the
stack trace StringBuilder.

svn path=/trunk/mcs/; revision=106779

mcs/class/corlib/System/ChangeLog
mcs/class/corlib/System/Exception.cs

index 98135cc53b7cb1aecfbd571eaf0a8bcea08b0584..34790025ea1d8563dad1689fc2c61282706defee 100644 (file)
@@ -1,3 +1,8 @@
+2008-06-27  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * Exception.cs: Build method traces using the
+       stack trace StringBuilder.
+
 2008-06-27  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
 
        * Version.cs: Fix parameter names
index 5aa2a5e4f7016190637f8fb5d868c0ad551f4692..8fc77bac5e1a390ec557f04eabb2f09f1c8edd29 100644 (file)
@@ -190,7 +190,7 @@ namespace System
                                                        else
                                                                sb.AppendFormat ("<0x{0:x5}> {1}", frame.GetNativeOffset (), unknown);
                                                } else {
-                                                       sb.Append (GetFullNameForStackTrace (frame.GetMethod ()));
+                                                       GetFullNameForStackTrace (sb, frame.GetMethod ());
 
                                                        if (frame.GetILOffset () == -1)
                                                                sb.AppendFormat (" <0x{0:x5}> ", frame.GetNativeOffset ());
@@ -311,35 +311,43 @@ namespace System
                        return this;
                }
 
-               internal string GetFullNameForStackTrace (MethodBase mi)
+               internal void GetFullNameForStackTrace (StringBuilder sb, MethodBase mi)
                {
                        string parms = String.Empty;
                        ParameterInfo[] p = mi.GetParameters ();
-                       for (int i = 0; i < p.Length; ++i) {
-                               if (i > 0)
-                                       parms = parms + ", ";
-                               string paramName = (p [i].Name == null) ? String.Empty : (" " + p [i].Name);
-                               Type pt = p[i].ParameterType;
-                               if (pt.IsClass && pt.Namespace != String.Empty)
-                                       parms = parms + pt.Namespace + "." + pt.Name + paramName;
-                               else
-                                       parms = parms + pt.Name + paramName;
-                       }
+                       sb.Append (mi.DeclaringType.ToString ());
+                       sb.Append (".");
+                       sb.Append (mi.Name);
 
-                       string generic = String.Empty;
 #if NET_2_0 || BOOTSTRAP_NET_2_0
                        if (mi.IsGenericMethod) {
                                Type[] gen_params = mi.GetGenericArguments ();
-                               generic = "[";
+                               sb.Append ("[");
                                for (int j = 0; j < gen_params.Length; j++) {
                                        if (j > 0)
-                                               generic += ",";
-                                       generic += gen_params [j].Name;
+                                               sb.Append (",");
+                                       sb.Append (gen_params [j].Name);
                                }
-                               generic += "]";
+                               sb.Append ("]");
                        }
 #endif
-                       return mi.DeclaringType.ToString () + "." + mi.Name + generic + " (" + parms + ")";
+                       sb.Append (" (");
+                       for (int i = 0; i < p.Length; ++i) {
+                               if (i > 0)
+                                       sb.Append (", ");
+                               string paramName = (p [i].Name == null) ? String.Empty : (" " + p [i].Name);
+                               Type pt = p[i].ParameterType;
+                               if (pt.IsClass && pt.Namespace != String.Empty) {
+                                       sb.Append (pt.Namespace);
+                                       sb.Append (".");
+                                       sb.Append (pt.Name);
+                                       sb.Append (paramName);
+                               } else {
+                                       sb.Append (pt.Name);
+                                       sb.Append (paramName);
+                               }
+                       }
+                       sb.Append (")");
                }
 
 #if NET_2_0