diff --git a/Projects/Server/Buffers/ValueStringBuilder.cs b/Projects/Server/Buffers/ValueStringBuilder.cs index f06fdba05..ecc714ee3 100644 --- a/Projects/Server/Buffers/ValueStringBuilder.cs +++ b/Projects/Server/Buffers/ValueStringBuilder.cs @@ -22,9 +22,11 @@ public ref struct ValueStringBuilder get => _mt ? ArrayPool.Shared : STArrayPool.Shared; } - public ValueStringBuilder(bool mt = false) : this(64, mt) - { - } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ValueStringBuilder Create(int capacity = 64, bool mt = false) => new(capacity, mt); + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static ValueStringBuilder CreateMT(int capacity = 64) => new(capacity, true); // If this ctor is used, you cannot pass in stackalloc ROS for append/replace. public ValueStringBuilder(ReadOnlySpan initialString, bool mt = false) : this(initialString.Length, mt) diff --git a/Projects/Server/Main.cs b/Projects/Server/Main.cs index 4120e699c..c684e5fcf 100644 --- a/Projects/Server/Main.cs +++ b/Projects/Server/Main.cs @@ -607,7 +607,7 @@ namespace Server Interlocked.Increment(ref _mobileCount); } - ValueStringBuilder errors = new ValueStringBuilder(true); + using var errors = ValueStringBuilder.CreateMT(); try { diff --git a/Projects/UOContent/Commands/Properties.cs b/Projects/UOContent/Commands/Properties.cs index 4ff86a699..8d888bb1f 100644 --- a/Projects/UOContent/Commands/Properties.cs +++ b/Projects/UOContent/Commands/Properties.cs @@ -331,7 +331,7 @@ namespace Server.Commands return $"{p.Name} = {toString}"; } - using var builder = new ValueStringBuilder(); + using var builder = ValueStringBuilder.Create(); for (var i = 0; i < chain.Length; i++) { builder.Append(chain[i].Name); diff --git a/Projects/UOContent/Compression/TarArchive.cs b/Projects/UOContent/Compression/TarArchive.cs index 4905a3683..702866122 100755 --- a/Projects/UOContent/Compression/TarArchive.cs +++ b/Projects/UOContent/Compression/TarArchive.cs @@ -96,7 +96,7 @@ namespace Server.Compression new FileInfo(destinationArchiveFileName).EnsureDirectory(); - using var builder = new ValueStringBuilder(); + using var builder = ValueStringBuilder.Create(); var i = 0; foreach (var path in paths) { diff --git a/Projects/UOContent/Engines/Ethics/Evil/Powers/UnholySense.cs b/Projects/UOContent/Engines/Ethics/Evil/Powers/UnholySense.cs index 6494204b1..51b451ded 100644 --- a/Projects/UOContent/Engines/Ethics/Evil/Powers/UnholySense.cs +++ b/Projects/UOContent/Engines/Ethics/Evil/Powers/UnholySense.cs @@ -46,7 +46,7 @@ namespace Server.Ethics.Evil ++enemyCount; } - using var sb = new ValueStringBuilder(); + using var sb = ValueStringBuilder.Create(); sb.Append("You sense "); sb.Append(enemyCount == 0 ? "no" : enemyCount.ToString()); diff --git a/Projects/UOContent/Engines/Ethics/Hero/Powers/HolySense.cs b/Projects/UOContent/Engines/Ethics/Hero/Powers/HolySense.cs index d49597a32..12123d7e9 100644 --- a/Projects/UOContent/Engines/Ethics/Hero/Powers/HolySense.cs +++ b/Projects/UOContent/Engines/Ethics/Hero/Powers/HolySense.cs @@ -46,7 +46,7 @@ namespace Server.Ethics.Hero ++enemyCount; } - using var sb = new ValueStringBuilder(); + using var sb = ValueStringBuilder.Create(); sb.Append("You sense "); sb.Append(enemyCount == 0 ? "no" : enemyCount.ToString()); diff --git a/Projects/UOContent/Gumps/AdminGump.cs b/Projects/UOContent/Gumps/AdminGump.cs index 74dd03fbe..2869bd2b2 100644 --- a/Projects/UOContent/Gumps/AdminGump.cs +++ b/Projects/UOContent/Gumps/AdminGump.cs @@ -221,7 +221,7 @@ namespace Server.Gumps } case AdminGumpPage.Information_Perf: { - using var sb = new ValueStringBuilder(); + using var sb = ValueStringBuilder.Create(); ThreadPool.GetAvailableThreads(out var curUser, out var curIOCP); ThreadPool.GetMaxThreads(out var maxUser, out var maxIOCP); @@ -629,7 +629,7 @@ namespace Server.Gumps AddLabel(12, 140, LabelHue, "There are no accounts to display."); } - using var sb = new ValueStringBuilder(); + using var sb = ValueStringBuilder.Create(); for (int i = 0, index = listPage * 12; i < 12 && index >= 0 && index < sharedAccounts.Count; @@ -1169,7 +1169,7 @@ namespace Server.Gumps AddButtonLabeled(20, 150, GetButtonID(5, 4), "Add Comment"); - var sb = new ValueStringBuilder(); + var sb = ValueStringBuilder.Create(); if (a.Comments.Count == 0) { @@ -1208,7 +1208,7 @@ namespace Server.Gumps AddButtonLabeled(20, 150, GetButtonID(5, 5), "Add Tag"); - var sb = new ValueStringBuilder(); + var sb = ValueStringBuilder.Create(); if (a.Tags.Count == 0) { @@ -3054,7 +3054,7 @@ namespace Server.Gumps if (list.Count > 0) { - using var sb = new ValueStringBuilder(); + using var sb = ValueStringBuilder.Create(); sb.Append("You are about to ban "); sb.Append(list.Count); sb.Append(list.Count != 1 ? "accounts." : "account."); diff --git a/Projects/UOContent/Misc/ClientVerification.cs b/Projects/UOContent/Misc/ClientVerification.cs index 20c90f1f7..08ff2f7dc 100644 --- a/Projects/UOContent/Misc/ClientVerification.cs +++ b/Projects/UOContent/Misc/ClientVerification.cs @@ -81,7 +81,7 @@ namespace Server.Misc private static void EventSink_ClientVersionReceived(NetState state, ClientVersion version) { - using var message = new ValueStringBuilder(); + using var message = ValueStringBuilder.Create(); if (!_enable || state.Mobile?.AccessLevel != AccessLevel.Player) {