Skip to content

Commit cdf6c0b

Browse files
committed
SPIR-V generator: return pooled StringBuilders only after use
1 parent e7bd69a commit cdf6c0b

2 files changed

Lines changed: 13 additions & 7 deletions

File tree

sources/shaders/Stride.Shaders.Spirv.Generators/SPVGenerator.EnumerantParams.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ public ref partial struct EnumerantParameters
4444
public static string GenerateImplicitTuples(in EquatableList<string> parameters, in SpirvGrammar grammar)
4545
{
4646
var sb = StringBuilderPool.Get();
47-
StringBuilderPool.Return(sb);
4847
if (parameters.AsList() is List<string> { Count: > 0 } paramsList)
4948
{
5049
sb.AppendLine(@$"
@@ -77,7 +76,9 @@ public static implicit operator EnumerantParameters(({string.Join(", ", paramsLi
7776
}
7877
");
7978
}
80-
return sb.ToString();
79+
var result = sb.ToString();
80+
StringBuilderPool.Return(sb);
81+
return result;
8182
}
8283
public static string GenerateImplicitCasting(in OpKind opkind, in SpirvGrammar grammar)
8384
{
@@ -229,8 +230,9 @@ public static string GenerateEnumerantParameterSingle(in OpKind opkind, in Spirv
229230

230231

231232
sb.AppendLine("}");
233+
var result = sb.ToString();
232234
StringBuilderPool.Return(sb);
233-
return sb.ToString();
235+
return result;
234236
}
235237

236238

sources/shaders/Stride.Shaders.Spirv.Generators/SPVGenerator.Instructions.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -217,8 +217,9 @@ public void Dispose()
217217
");
218218
}
219219
structBuilder.AppendLine("}");
220+
var result = structBuilder.ToString();
220221
StringBuilderPool.Return(structBuilder);
221-
return structBuilder.ToString();
222+
return result;
222223

223224
}
224225

@@ -243,8 +244,9 @@ public static string ToSpreadOperators(InstructionData instruction, SpirvGrammar
243244
}
244245
else
245246
sb.Append(instruction.OpName).Append(", ").Append(string.Join(", ", operands.Select(ToSpreadOperator)));
247+
var result = sb.ToString();
246248
StringBuilderPool.Return(sb);
247-
return sb.ToString();
249+
return result;
248250
}
249251
return instruction.OpName;
250252
}
@@ -263,8 +265,9 @@ public static string ToAssignSwitchCases(List<OperandData> operands, SpirvGramma
263265
if (operand.IsParameterized)
264266
break;
265267
}
268+
var result = sb.ToString();
266269
StringBuilderPool.Return(sb);
267-
return sb.ToString();
270+
return result;
268271
}
269272
public static string ToAssignSwitchCase(OperandData operand)
270273
{
@@ -304,8 +307,9 @@ public static string ToAssignSwitchCase(OperandData operand)
304307
sb.AppendLine("}");
305308
sb.Append("break;");
306309

310+
var result = sb.ToString();
307311
StringBuilderPool.Return(sb);
308-
return sb.ToString();
312+
return result;
309313
}
310314
public static string ToFunctionParameters(OperandData operand)
311315
{

0 commit comments

Comments
 (0)