Skip to content

Commit cd02b06

Browse files
authored
Consistently use inline stackallocs with ValueStringBuilder (#37795)
Primarily for style consistency.
1 parent 2d369cf commit cd02b06

File tree

8 files changed

+21
-46
lines changed

8 files changed

+21
-46
lines changed

src/libraries/Common/tests/Tests/System/Text/ValueStringBuilderTests.cs

+3-6
Original file line numberDiff line numberDiff line change
@@ -283,8 +283,7 @@ public void EnsureCapacity_IfRequestedCapacityWins()
283283
{
284284
// Note: constants used here may be dependent on minimal buffer size
285285
// the ArrayPool is able to return.
286-
Span<char> initialBuffer = stackalloc char[32];
287-
var builder = new ValueStringBuilder(initialBuffer);
286+
var builder = new ValueStringBuilder(stackalloc char[32]);
288287

289288
builder.EnsureCapacity(65);
290289

@@ -294,8 +293,7 @@ public void EnsureCapacity_IfRequestedCapacityWins()
294293
[Fact]
295294
public void EnsureCapacity_IfBufferTimesTwoWins()
296295
{
297-
Span<char> initialBuffer = stackalloc char[32];
298-
var builder = new ValueStringBuilder(initialBuffer);
296+
var builder = new ValueStringBuilder(stackalloc char[32]);
299297

300298
builder.EnsureCapacity(33);
301299

@@ -307,8 +305,7 @@ public void EnsureCapacity_NoAllocIfNotNeeded()
307305
{
308306
// Note: constants used here may be dependent on minimal buffer size
309307
// the ArrayPool is able to return.
310-
Span<char> initialBuffer = stackalloc char[64];
311-
var builder = new ValueStringBuilder(initialBuffer);
308+
var builder = new ValueStringBuilder(stackalloc char[64]);
312309

313310
builder.EnsureCapacity(16);
314311

src/libraries/System.Console/src/System/ConsolePal.Windows.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -580,8 +580,7 @@ public static unsafe string Title
580580
{
581581
get
582582
{
583-
Span<char> initialBuffer = stackalloc char[256];
584-
ValueStringBuilder builder = new ValueStringBuilder(initialBuffer);
583+
ValueStringBuilder builder = new ValueStringBuilder(stackalloc char[256]);
585584

586585
while (true)
587586
{

src/libraries/System.IO.FileSystem/src/System/IO/Enumeration/FileSystemName.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ public static string TranslateWin32Expression(string? expression)
3838
return "*";
3939

4040
bool modified = false;
41-
Span<char> stackSpace = stackalloc char[32];
42-
ValueStringBuilder sb = new ValueStringBuilder(stackSpace);
41+
ValueStringBuilder sb = new ValueStringBuilder(stackalloc char[32]);
4342
int length = expression.Length;
4443
for (int i = 0; i < length; i++)
4544
{

src/libraries/System.Private.CoreLib/src/System/ApplicationId.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,7 @@ public ApplicationId(byte[] publicKeyToken, string name, Version version, string
3838

3939
public override string ToString()
4040
{
41-
Span<char> charSpan = stackalloc char[128];
42-
var sb = new ValueStringBuilder(charSpan);
41+
var sb = new ValueStringBuilder(stackalloc char[128]);
4342
sb.Append(Name);
4443
if (Culture != null)
4544
{

src/libraries/System.Private.CoreLib/src/System/Net/WebUtility.cs

+8-20
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,8 @@ public static class WebUtility
5252
// characters need to be encoded.
5353
// For larger string we rent the input string's length plus a fixed
5454
// conservative amount of chars from the ArrayPool.
55-
Span<char> buffer = value.Length < 80 ?
56-
stackalloc char[256] :
57-
null;
58-
ValueStringBuilder sb = buffer != null ?
59-
new ValueStringBuilder(buffer) :
55+
ValueStringBuilder sb = value.Length < 80 ?
56+
new ValueStringBuilder(stackalloc char[256]) :
6057
new ValueStringBuilder(value.Length + 200);
6158

6259
sb.Append(valueSpan.Slice(0, index));
@@ -92,11 +89,8 @@ public static void HtmlEncode(string? value, TextWriter output)
9289
// characters need to be encoded.
9390
// For larger string we rent the input string's length plus a fixed
9491
// conservative amount of chars from the ArrayPool.
95-
Span<char> buffer = value.Length < 80 ?
96-
stackalloc char[256] :
97-
null;
98-
ValueStringBuilder sb = buffer != null ?
99-
new ValueStringBuilder(buffer) :
92+
ValueStringBuilder sb = value.Length < 80 ?
93+
new ValueStringBuilder(stackalloc char[256]) :
10094
new ValueStringBuilder(value.Length + 200);
10195

10296
sb.Append(valueSpan.Slice(0, index));
@@ -201,11 +195,8 @@ private static void HtmlEncode(ReadOnlySpan<char> input, ref ValueStringBuilder
201195

202196
// In the worst case the decoded string has the same length.
203197
// For small inputs we use stack allocation.
204-
Span<char> buffer = value.Length <= 256 ?
205-
stackalloc char[256] :
206-
null;
207-
ValueStringBuilder sb = buffer != null ?
208-
new ValueStringBuilder(buffer) :
198+
ValueStringBuilder sb = value.Length <= 256 ?
199+
new ValueStringBuilder(stackalloc char[256]) :
209200
new ValueStringBuilder(value.Length);
210201

211202
sb.Append(valueSpan.Slice(0, index));
@@ -238,11 +229,8 @@ public static void HtmlDecode(string? value, TextWriter output)
238229

239230
// In the worst case the decoded string has the same length.
240231
// For small inputs we use stack allocation.
241-
Span<char> buffer = value.Length <= 256 ?
242-
stackalloc char[256] :
243-
null;
244-
ValueStringBuilder sb = buffer != null ?
245-
new ValueStringBuilder(buffer) :
232+
ValueStringBuilder sb = value.Length <= 256 ?
233+
new ValueStringBuilder(stackalloc char[256]) :
246234
new ValueStringBuilder(value.Length);
247235

248236
sb.Append(valueSpan.Slice(0, index));

src/libraries/System.Private.CoreLib/src/System/Number.Formatting.cs

+4-8
Original file line numberDiff line numberDiff line change
@@ -378,15 +378,13 @@ internal static unsafe void DecimalToNumber(ref decimal d, ref NumberBuffer numb
378378

379379
public static string FormatDouble(double value, string? format, NumberFormatInfo info)
380380
{
381-
Span<char> stackBuffer = stackalloc char[CharStackBufferSize];
382-
var sb = new ValueStringBuilder(stackBuffer);
381+
var sb = new ValueStringBuilder(stackalloc char[CharStackBufferSize]);
383382
return FormatDouble(ref sb, value, format, info) ?? sb.ToString();
384383
}
385384

386385
public static bool TryFormatDouble(double value, ReadOnlySpan<char> format, NumberFormatInfo info, Span<char> destination, out int charsWritten)
387386
{
388-
Span<char> stackBuffer = stackalloc char[CharStackBufferSize];
389-
var sb = new ValueStringBuilder(stackBuffer);
387+
var sb = new ValueStringBuilder(stackalloc char[CharStackBufferSize]);
390388
string? s = FormatDouble(ref sb, value, format, info);
391389
return s != null ?
392390
TryCopyTo(s, destination, out charsWritten) :
@@ -586,15 +584,13 @@ private static int GetFloatingPointMaxDigitsAndPrecision(char fmt, ref int preci
586584

587585
public static string FormatSingle(float value, string? format, NumberFormatInfo info)
588586
{
589-
Span<char> stackBuffer = stackalloc char[CharStackBufferSize];
590-
var sb = new ValueStringBuilder(stackBuffer);
587+
var sb = new ValueStringBuilder(stackalloc char[CharStackBufferSize]);
591588
return FormatSingle(ref sb, value, format, info) ?? sb.ToString();
592589
}
593590

594591
public static bool TryFormatSingle(float value, ReadOnlySpan<char> format, NumberFormatInfo info, Span<char> destination, out int charsWritten)
595592
{
596-
Span<char> stackBuffer = stackalloc char[CharStackBufferSize];
597-
var sb = new ValueStringBuilder(stackBuffer);
593+
var sb = new ValueStringBuilder(stackalloc char[CharStackBufferSize]);
598594
string? s = FormatSingle(ref sb, value, format, info);
599595
return s != null ?
600596
TryCopyTo(s, destination, out charsWritten) :

src/libraries/System.Runtime.Numerics/src/System/Numerics/BigNumber.cs

+2-4
Original file line numberDiff line numberDiff line change
@@ -519,8 +519,7 @@ internal static char ParseFormatSpecifier(ReadOnlySpan<char> format, out int dig
519519
}
520520
bits = bits.Slice(0, bytesWrittenOrNeeded);
521521

522-
Span<char> stackSpace = stackalloc char[128]; // each byte is typically two chars
523-
var sb = new ValueStringBuilder(stackSpace);
522+
var sb = new ValueStringBuilder(stackalloc char[128]); // each byte is typically two chars
524523

525524
int cur = bits.Length - 1;
526525
if (cur > -1)
@@ -729,8 +728,7 @@ internal static bool TryFormatBigInteger(BigInteger value, ReadOnlySpan<char> fo
729728
int precision = 29;
730729
int scale = cchMax - ichDst;
731730

732-
Span<char> stackSpace = stackalloc char[128]; // arbitrary stack cut-off
733-
var sb = new ValueStringBuilder(stackSpace);
731+
var sb = new ValueStringBuilder(stackalloc char[128]); // arbitrary stack cut-off
734732
FormatProvider.FormatBigInteger(ref sb, precision, scale, sign, formatSpan, info, rgch, ichDst);
735733

736734
if (targetSpan)

src/libraries/System.ServiceProcess.ServiceController/src/System/ServiceProcess/ServiceController.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -538,8 +538,7 @@ private unsafe void GenerateNames()
538538
/// </summary>
539539
private unsafe string? GetServiceKeyName(SafeServiceHandle? SCMHandle, string serviceDisplayName)
540540
{
541-
Span<char> initialBuffer = stackalloc char[256];
542-
var builder = new ValueStringBuilder(initialBuffer);
541+
var builder = new ValueStringBuilder(stackalloc char[256]);
543542
int bufLen;
544543
while (true)
545544
{

0 commit comments

Comments
 (0)