Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/main/src
diff options
context:
space:
mode:
authorMike Krüger <mikkrg@microsoft.com>2018-02-26 12:30:08 +0300
committerMike Krüger <mikkrg@microsoft.com>2018-02-26 12:30:08 +0300
commit388f883011578279a41be0a3fa8c3f1e53b55ab0 (patch)
tree0f07ec282f19d9839496a92b55c78d706ded8448 /main/src
parent138dd59b68cbe677be22ed4e5943684261351e54 (diff)
[Core] Use StringBuilderCache
Diffstat (limited to 'main/src')
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/PcFileCache.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/BinaryMessage.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/LocalConsole.cs12
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessArgumentBuilder.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core.Text/TextChangeEventArgs.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/ErrorHelper.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/Properties.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs12
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringBuilderCache.cs5
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringParserService.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/ConditionParser.cs4
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs12
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/EscapingUtilities.cs13
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/IMSBuildPropertySet.cs8
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs6
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs3
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextFormatter.cs7
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs13
-rw-r--r--main/src/core/MonoDevelop.Core/MonoDevelop.Projects/MonoExecutionParameters.cs4
19 files changed, 71 insertions, 59 deletions
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/PcFileCache.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/PcFileCache.cs
index 167d48924e..3b7e7a3b88 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/PcFileCache.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Assemblies/PcFileCache.cs
@@ -29,6 +29,7 @@ using System.Text;
using System.Xml;
using System.IO;
using System.Collections.Generic;
+using MonoDevelop.Core;
// IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
// This code is shared with xbuild, which has to build with .NET 2.0,
@@ -535,7 +536,7 @@ namespace Mono.PkgConfig
if (i == -1)
return value;
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = StringBuilderCache.Allocate ();
int last = 0;
while (i != -1 && i < value.Length) {
sb.Append (value, last, i - last);
@@ -546,6 +547,7 @@ namespace Mono.PkgConfig
if (n == -1 || n == i) {
// Closing bracket not found or empty name
HasErrors = true;
+ StringBuilderCache.Free (sb);
return value;
}
string rname = value.Substring (i, n - i);
@@ -554,6 +556,7 @@ namespace Mono.PkgConfig
sb.Append (rval);
else {
HasErrors = true;
+ StringBuilderCache.Free (sb);
return value;
}
i = n + 1;
@@ -565,7 +568,7 @@ namespace Mono.PkgConfig
i = value.IndexOf ("${", i);
}
sb.Append (value, last, value.Length - last);
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/BinaryMessage.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/BinaryMessage.cs
index 14e6d4fae8..6ddc95264f 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/BinaryMessage.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/BinaryMessage.cs
@@ -609,14 +609,14 @@ namespace MonoDevelop.Core.Execution
public override string ToString ()
{
- var sb = new StringBuilder ();
+ var sb = StringBuilderCache.Allocate ();
foreach (var ar in args) {
if (sb.Length > 0)
sb.Append (", ");
sb.Append (ar.Name).Append (":");
AppendArg (sb, ar.Value);
}
- return string.Format ("({3}) [{0} Target={1}, Args=[{2}]]", Name, Target, sb, Id);
+ return string.Format ("({3}) [{0} Target={1}, Args=[{2}]]", Name, Target, StringBuilderCache.ReturnAndFree (sb), Id);
}
void AppendArg (StringBuilder sb, object arg)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/LocalConsole.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/LocalConsole.cs
index 17b496bf80..cadd1fd113 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/LocalConsole.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/LocalConsole.cs
@@ -221,36 +221,36 @@ namespace MonoDevelop.Core.Execution
public override string ReadLine ()
{
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = StringBuilderCache.Allocate ();
while (LoadCurrent (true)) {
for (int i=idx; i < current.Length; i++) {
if (current[i] == '\n') {
idx = i + 1;
sb.Append (current, 0, i);
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
if (current[i] == '\r') {
idx = i + 1;
sb.Append (current, 0, i);
if (LoadCurrent (true) && current [idx] == '\n')
idx++;
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
}
sb.Append (current, idx, current.Length - idx);
current = null;
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
public override string ReadToEnd ()
{
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = StringBuilderCache.Allocate ();
while (LoadCurrent (true)) {
sb.Append (current, idx, current.Length - idx);
current = null;
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessArgumentBuilder.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessArgumentBuilder.cs
index f43d1d72a5..f875d79a2d 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessArgumentBuilder.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessArgumentBuilder.cs
@@ -115,11 +115,11 @@ namespace MonoDevelop.Core.Execution
/// arguments, only quoted arguments with escaped quotes.</remarks>
public static string Quote (string s)
{
- var sb = new StringBuilder ();
+ var sb = StringBuilderCache.Allocate ();
sb.Append ('"');
AppendEscaped (sb, escapeDoubleQuoteCharsStr, s);
sb.Append ('"');
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
public override string ToString ()
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Text/TextChangeEventArgs.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Text/TextChangeEventArgs.cs
index 31e5958e46..2f312311ac 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Text/TextChangeEventArgs.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Text/TextChangeEventArgs.cs
@@ -222,7 +222,7 @@ namespace MonoDevelop.Core.Text
{
if (text == null)
return null;
- var sb = new StringBuilder ();
+ var sb = StringBuilderCache.Allocate ();
foreach (var ch in text) {
switch (ch) {
case '\r':
@@ -239,7 +239,7 @@ namespace MonoDevelop.Core.Text
break;
}
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ErrorHelper.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ErrorHelper.cs
index 73e1f56ec5..610d7cd346 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ErrorHelper.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/ErrorHelper.cs
@@ -51,13 +51,13 @@ namespace MonoDevelop.Core
var ae = (AggregateException)ex;
if (ae.InnerExceptions.Count == 1)
return GetErrorMessage (ae.InnerException);
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = StringBuilderCache.Allocate ();
foreach (var e in ae.InnerExceptions) {
if (sb.Length > 0 && sb [sb.Length - 1] != '.')
sb.Append (". ");
sb.Append (GetErrorMessage (ex).Trim ());
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
} else if (ex is UserException) {
var ue = (UserException)ex;
if (!string.IsNullOrEmpty (ue.Details)) {
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Properties.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Properties.cs
index 1f33234b3d..8b18107d45 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Properties.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/Properties.cs
@@ -344,7 +344,7 @@ namespace MonoDevelop.Core
public override string ToString ()
{
- StringBuilder result = new StringBuilder ();
+ StringBuilder result = StringBuilderCache.Allocate ();
result.Append ("[Properties:");
foreach (KeyValuePair<string, object> property in this.properties) {
result.Append (property.Key);
@@ -353,7 +353,7 @@ namespace MonoDevelop.Core
result.Append (",");
}
result.Append ("]");
- return result.ToString ();
+ return StringBuilderCache.ReturnAndFree (result);
}
public Properties Clone ()
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs
index 6f306b490d..5af30dff22 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/PropertyBag.cs
@@ -246,7 +246,7 @@ namespace MonoDevelop.Core
string EscapeName (string str)
{
- StringBuilder sb = new StringBuilder (str.Length);
+ StringBuilder sb = StringBuilderCache.Allocate ();
for (int n=0; n<str.Length; n++) {
char c = str [n];
if (c == '_')
@@ -259,24 +259,24 @@ namespace MonoDevelop.Core
else
sb.Append (c);
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
string UnescapeName (string str)
{
- StringBuilder sb = new StringBuilder (str.Length);
+ StringBuilder sb = StringBuilderCache.Allocate ();
for (int n=0; n<str.Length; n++) {
char c = str [n];
if (c == '_') {
if (n + 1 >= str.Length)
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
if (str [n + 1] == '_') {
sb.Append (c);
n++;
} else {
int len = int.Parse (str.Substring (n+1,1));
if (n + 2 + len - 1 >= str.Length)
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
int ic;
if (int.TryParse (str.Substring (n + 2, len), NumberStyles.HexNumber, null, out ic))
sb.Append ((char)ic);
@@ -285,7 +285,7 @@ namespace MonoDevelop.Core
} else
sb.Append (c);
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringBuilderCache.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringBuilderCache.cs
index b1cde57805..8c01bb2310 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringBuilderCache.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringBuilderCache.cs
@@ -38,6 +38,11 @@ namespace MonoDevelop.Core
return SharedPools.Default<StringBuilder> ().Allocate ();
}
+ public static StringBuilder Allocate (string text)
+ {
+ return SharedPools.Default<StringBuilder> ().Allocate ().Append (text);
+ }
+
public static void Free (StringBuilder sb)
{
sb.Clear ();
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringParserService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringParserService.cs
index 77ebc71804..d78ff2f29d 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringParserService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/StringParserService.cs
@@ -196,7 +196,7 @@ namespace MonoDevelop.Core
public static string Parse (string input, IStringTagModel customTags)
{
- StringBuilder result = new StringBuilder (input.Length);
+ StringBuilder result = StringBuilderCache.Allocate ();
int brace;
int i = 0;
@@ -225,7 +225,7 @@ namespace MonoDevelop.Core
}
i++;
}
- return result.ToString ();
+ return StringBuilderCache.ReturnAndFree (result);
}
public static IEnumerable<IStringTagProvider> GetProviders ()
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/ConditionParser.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/ConditionParser.cs
index 65cc6cbfa4..98f58747ae 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/ConditionParser.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild.Conditions/ConditionParser.cs
@@ -257,7 +257,7 @@ namespace MonoDevelop.Projects.MSBuild.Conditions {
if (tokenizer.IsEOF ())
throw new ExpressionParseException ("Missing closing parenthesis in condition " + conditionStr);
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = Core.StringBuilderCache.Allocate ();
sb.AppendFormat ("{0}({1}", prefix, tokenizer.Token.Value);
tokenizer.GetNextToken ();
@@ -280,7 +280,7 @@ namespace MonoDevelop.Projects.MSBuild.Conditions {
sb.Append (")");
//FIXME: HACKY!
- return new ConditionFactorExpression (new Token (sb.ToString (), TokenType.String, token_pos));
+ return new ConditionFactorExpression (new Token (Core.StringBuilderCache.ReturnAndFree (sb), TokenType.String, token_pos));
}
void ThrowParseException(TokenType type, string error_fmt, params object[] args)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs
index e5e9a05e5c..d9873559ec 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs
@@ -645,18 +645,18 @@ namespace MonoDevelop.Projects.MSBuild
items = result;
return true;
} else if (ExecuteTransformItemListFunction (ref transformItems, itemFunction, itemFunctionArgs, out ignoreMetadata)) {
- var sb = new StringBuilder ();
+ var sb = StringBuilderCache.Allocate ();
for (int n = 0; n < transformItems.Length; n++) {
if (n > 0)
sb.Append (';');
sb.Append (transformItems[n].Include);
}
- items = sb.ToString ();
+ items = StringBuilderCache.ReturnAndFree (sb);
return true;
}
}
- var sbi = new StringBuilder ();
+ var sbi = StringBuilderCache.Allocate ();
int count = 0;
foreach (var eit in transformItems) {
@@ -678,7 +678,7 @@ namespace MonoDevelop.Projects.MSBuild
context.ClearItemContext ();
}
}
- items = sbi.ToString ();
+ items = Core.StringBuilderCache.ReturnAndFree (sbi);
return true;
}
@@ -943,7 +943,7 @@ namespace MonoDevelop.Projects.MSBuild
static string ExcludeToRegex (string exclude, bool excludeDirectoriesOnly = false)
{
exclude = exclude.Replace ('/', '\\').Replace (@"\\", @"\");
- var sb = new StringBuilder ();
+ var sb = StringBuilderCache.Allocate ();
foreach (var ep in exclude.Split (new char [] { ';' }, StringSplitOptions.RemoveEmptyEntries)) {
var ex = ep.Trim ();
if (excludeDirectoriesOnly) {
@@ -977,7 +977,7 @@ namespace MonoDevelop.Projects.MSBuild
}
sb.Append ('$');
}
- return sb.ToString ();
+ return Core.StringBuilderCache.ReturnAndFree (sb);
}
static char [] regexEscapeChars = { '\\', '^', '$', '{', '}', '[', ']', '(', ')', '.', '*', '+', '?', '|', '<', '>', '-', '&' };
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/EscapingUtilities.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/EscapingUtilities.cs
index 94a180f36d..803ff6df8a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/EscapingUtilities.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/EscapingUtilities.cs
@@ -5,7 +5,8 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
-
+using MonoDevelop.Core;
+
namespace Microsoft.Build.Shared
{
/// <summary>
@@ -70,7 +71,7 @@ namespace Microsoft.Build.Shared
}
// This is where we're going to build up the final string to return to the caller.
- StringBuilder unescapedString = new StringBuilder (escapedString.Length);
+ StringBuilder unescapedString = StringBuilderCache.Allocate ();
int currentPosition = 0;
@@ -112,7 +113,7 @@ namespace Microsoft.Build.Shared
// characters into the destination.
unescapedString.Append(escapedString, currentPosition, escapedString.Length - currentPosition);
- return unescapedString.ToString ();
+ return StringBuilderCache.ReturnAndFree (unescapedString);
}
@@ -172,16 +173,16 @@ namespace Microsoft.Build.Shared
}
// This is where we're going to build up the final string to return to the caller.
- StringBuilder escapedStringBuilder = new StringBuilder (unescapedString.Length * 2);
+ StringBuilder escapedStringBuilder = StringBuilderCache.Allocate ();
AppendEscapedString(escapedStringBuilder, unescapedString);
if (!cache)
{
- return escapedStringBuilder.ToString ();
+ return StringBuilderCache.ReturnAndFree (escapedStringBuilder);
}
- string escapedString = escapedStringBuilder.ToString ();
+ string escapedString = StringBuilderCache.ReturnAndFree (escapedStringBuilder);
lock (s_unescapedToEscapedStrings)
{
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/IMSBuildPropertySet.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/IMSBuildPropertySet.cs
index 76e96caa7b..73990668a0 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/IMSBuildPropertySet.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/IMSBuildPropertySet.cs
@@ -228,7 +228,7 @@ namespace MonoDevelop.Projects.MSBuild
int i = val.IndexOfAny (new char[] {'\n','\r','\t'});
if (i != -1 || val [0] == '@') {
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = StringBuilderCache.Allocate ();
if (i != -1) {
int fi = val.IndexOf ('\\');
if (fi != -1 && fi < i) i = fi;
@@ -248,7 +248,7 @@ namespace MonoDevelop.Projects.MSBuild
else
sb.Append (c);
}
- val = "@" + sb.ToString ();
+ val = "@" + StringBuilderCache.ReturnAndFree (sb);
}
char fc = val [0];
char lc = val [val.Length - 1];
@@ -283,7 +283,7 @@ namespace MonoDevelop.Projects.MSBuild
end--;
}
if (val [start] == '@') {
- StringBuilder sb = new StringBuilder (val.Length);
+ StringBuilder sb = StringBuilderCache.Allocate ();
for (int n = start + 1; n < end; n++) {
char c = val [n];
if (c == '\\') {
@@ -294,7 +294,7 @@ namespace MonoDevelop.Projects.MSBuild
}
sb.Append (c);
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
else
return val.Substring (start, end - start);
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
index 72c36e7b45..395321393c 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs
@@ -1152,7 +1152,7 @@ namespace MonoDevelop.Projects.MSBuild
if (elem == null)
return "";
var node = elem.PreviousSibling;
- StringBuilder res = new StringBuilder ();
+ StringBuilder res = StringBuilderCache.Allocate ();
while (node != null) {
var ws = node as XmlWhitespace;
@@ -1163,13 +1163,13 @@ namespace MonoDevelop.Projects.MSBuild
res.Append (t);
} else {
res.Append (t, i + 1, t.Length - i - 1);
- return res.ToString ();
+ return StringBuilderCache.ReturnAndFree (res);
}
} else
res.Clear ();
node = node.PreviousSibling;
}
- return res.ToString ();
+ return StringBuilderCache.ReturnAndFree (res);
}
public static void Indent (TextFormatInfo format, XmlElement elem, bool closeInNewLine)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
index 72e2c2df70..57e57f7ada 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Policies/PolicyService.cs
@@ -530,7 +530,7 @@ namespace MonoDevelop.Projects.Policies
}
}
- StringBuilder removed = new StringBuilder ();
+ StringBuilder removed = StringBuilderCache.Allocate ();
for (int n=0; n<baseline.ItemData.Count; n++) {
DataNode node = baseline.ItemData [n];
if (!extracted.Contains (node)) {
@@ -545,6 +545,7 @@ namespace MonoDevelop.Projects.Policies
if (removed.Length > 0)
newItem.ItemData.Add (new DataValue ("__removed", removed.ToString ()) {StoreAsAttribute = true});
+ StringBuilderCache.Free (removed);
return newItem;
}
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextFormatter.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextFormatter.cs
index cc1f54ac19..95af55600a 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextFormatter.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.Text/TextFormatter.cs
@@ -26,6 +26,7 @@
using System;
using System.Text;
+using MonoDevelop.Core;
namespace MonoDevelop.Projects.Text
{
@@ -343,10 +344,10 @@ namespace MonoDevelop.Projects.Text
void CreateIndentString ()
{
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = StringBuilderCache.Allocate ();
indentColumnWidth = AddIndentString (sb, indentString);
-
- paragFormattedIndentString = sb.ToString () + new string (' ', paragraphStartMargin);
+ sb.Append (new string (' ', paragraphStartMargin));
+ paragFormattedIndentString = StringBuilderCache.ReturnAndFree (sb);
paragIndentColumnWidth = indentColumnWidth + paragraphStartMargin;
if (LeftMargin > 0) {
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
index 9dee0e5bc1..91b3ee2145 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs
@@ -1571,17 +1571,17 @@ namespace MonoDevelop.Projects
static string GetHierarchicalNamespace (string relativePath)
{
- StringBuilder sb = new StringBuilder (relativePath);
+ StringBuilder sb = StringBuilderCache.Allocate (relativePath);
for (int i = 0; i < sb.Length; i++) {
if (sb[i] == Path.DirectorySeparatorChar)
sb[i] = '.';
}
- return sb.ToString ();
+ return StringBuilderCache.ReturnAndFree (sb);
}
static string SanitisePotentialNamespace (string potential)
{
- StringBuilder sb = new StringBuilder ();
+ StringBuilder sb = StringBuilderCache.Allocate ();
foreach (char c in potential) {
if (char.IsLetter (c) || c == '_' || (sb.Length > 0 && (char.IsLetterOrDigit (sb[sb.Length - 1]) || sb[sb.Length - 1] == '_') && (c == '.' || char.IsNumber (c)))) {
sb.Append (c);
@@ -1591,9 +1591,10 @@ namespace MonoDevelop.Projects
if (sb[sb.Length - 1] == '.')
sb.Remove (sb.Length - 1, 1);
- return sb.ToString ();
- } else
- return null;
+ return StringBuilderCache.ReturnAndFree (sb);
+ }
+ StringBuilderCache.Free (sb);
+ return null;
}
void RuntimeSystemAssemblyServiceDefaultRuntimeChanged (object sender, EventArgs e)
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/MonoExecutionParameters.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/MonoExecutionParameters.cs
index b37e4343d6..f172182f44 100644
--- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/MonoExecutionParameters.cs
+++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/MonoExecutionParameters.cs
@@ -269,7 +269,7 @@ namespace MonoDevelop.Projects
public string GenerateDescription ()
{
- StringBuilder ops = new StringBuilder ();
+ StringBuilder ops = StringBuilderCache.Allocate ();
foreach (var kvp in itemPropertyAttributes) {
var prop = kvp.Key;
@@ -286,7 +286,7 @@ namespace MonoDevelop.Projects
ops.Append (": ").Append (GetValue (pval));
}
}
- return ops.ToString ();
+ return StringBuilderCache.ReturnAndFree (ops);
}
public MonoExecutionParameters Clone ()
{