Skip to content

Commit 7080e63

Browse files
committed
Removed workload return types from code gen.
1 parent 9916722 commit 7080e63

File tree

9 files changed

+31
-351
lines changed

9 files changed

+31
-351
lines changed

Diff for: src/BenchmarkDotNet/Code/CodeGenerator.cs

+1-30
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,12 @@ internal static string Generate(BuildPartition buildPartition)
3737

3838
string passArguments = GetPassArguments(benchmark);
3939

40-
string compilationId = $"{provider.ReturnsDefinition}_{buildInfo.Id}";
41-
4240
AddNonEmptyUnique(additionalLogic, benchmark.Descriptor.AdditionalLogic);
4341

4442
string benchmarkTypeCode = new SmartStringBuilder(ResourceHelper.LoadTemplate("BenchmarkType.txt"))
4543
.Replace("$ID$", buildInfo.Id.ToString())
4644
.Replace("$OperationsPerInvoke$", provider.OperationsPerInvoke)
4745
.Replace("$WorkloadTypeName$", provider.WorkloadTypeName)
48-
.Replace("$WorkloadMethodReturnType$", provider.WorkloadMethodReturnTypeName)
49-
.Replace("$WorkloadMethodReturnTypeModifiers$", provider.WorkloadMethodReturnTypeModifiers)
5046
.Replace("$GlobalSetupMethodName$", provider.GlobalSetupMethodName)
5147
.Replace("$GlobalCleanupMethodName$", provider.GlobalCleanupMethodName)
5248
.Replace("$IterationSetupMethodName$", provider.IterationSetupMethodName)
@@ -61,7 +57,7 @@ internal static string Generate(BuildPartition buildPartition)
6157
.Replace("$MeasureExtraStats$", buildInfo.Config.HasExtraStatsDiagnoser() ? "true" : "false")
6258
.Replace("$DisassemblerEntryMethodName$", DisassemblerConstants.DisassemblerEntryMethodName)
6359
.Replace("$WorkloadMethodCall$", provider.GetWorkloadMethodCall(passArguments))
64-
.RemoveRedundantIfDefines(compilationId);
60+
.ToString();
6561

6662
benchmarkTypeCode = Unroll(benchmarkTypeCode, benchmark.Job.ResolveValue(RunMode.UnrollFactorCharacteristic, EnvironmentResolver.Instance));
6763

@@ -301,31 +297,6 @@ public SmartStringBuilder Replace(string oldValue, string? newValue)
301297
return this;
302298
}
303299

304-
public string RemoveRedundantIfDefines(string id)
305-
{
306-
var oldLines = builder.ToString().Split('\n');
307-
var newLines = new List<string>();
308-
bool keepAdding = true;
309-
310-
foreach (string line in oldLines)
311-
{
312-
if (line.StartsWith("#if RETURNS") || line.StartsWith("#elif RETURNS"))
313-
{
314-
keepAdding = line.Contains(id);
315-
}
316-
else if (line.StartsWith("#endif // RETURNS"))
317-
{
318-
keepAdding = true;
319-
}
320-
else if (keepAdding)
321-
{
322-
newLines.Add(line);
323-
}
324-
}
325-
326-
return string.Join("\n", newLines);
327-
}
328-
329300
public override string ToString() => builder.ToString();
330301
}
331302
}

Diff for: src/BenchmarkDotNet/Templates/BenchmarkType.txt

+7-54
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,13 @@
127127
}
128128
}
129129

130+
// Prevent inlining the method invoke.
131+
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining | System.Runtime.CompilerServices.MethodImplOptions.NoOptimization)]
132+
private void __WorkloadWrapper($ArgumentsDefinition$)
133+
{
134+
$WorkloadMethodCall$;
135+
}
136+
130137
[System.Runtime.CompilerServices.MethodImpl(BenchmarkDotNet.Portability.CodeGenHelper.AggressiveOptimizationOption)]
131138
private void WorkloadActionUnroll(System.Int64 invokeCount)
132139
{
@@ -147,59 +154,6 @@
147154
}
148155
}
149156

150-
#if RETURNS_NON_VOID_$ID$
151-
152-
// Prevent inlining the method invoke.
153-
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining | System.Runtime.CompilerServices.MethodImplOptions.NoOptimization)]
154-
private $WorkloadMethodReturnType$ __WorkloadWrapper($ArgumentsDefinition$)
155-
{
156-
return $WorkloadMethodCall$;
157-
}
158-
159-
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoOptimization | System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
160-
public $WorkloadMethodReturnType$ $DisassemblerEntryMethodName$()
161-
{
162-
if (NotEleven == 11)
163-
{
164-
$LoadArguments$
165-
return $WorkloadMethodCall$;
166-
}
167-
168-
return default($WorkloadMethodReturnType$);
169-
}
170-
171-
#elif RETURNS_BYREF_$ID$
172-
173-
// Prevent inlining the method invoke.
174-
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining | System.Runtime.CompilerServices.MethodImplOptions.NoOptimization)]
175-
private $WorkloadMethodReturnTypeModifiers$ $WorkloadMethodReturnType$ __WorkloadWrapper($ArgumentsDefinition$)
176-
{
177-
return ref $WorkloadMethodCall$;
178-
}
179-
180-
private $WorkloadMethodReturnType$ __disassemblerDefaultValueHolder = default($WorkloadMethodReturnType$);
181-
182-
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoOptimization | System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
183-
public $WorkloadMethodReturnTypeModifiers$ $WorkloadMethodReturnType$ $DisassemblerEntryMethodName$()
184-
{
185-
if (NotEleven == 11)
186-
{
187-
$LoadArguments$
188-
return ref $WorkloadMethodCall$;
189-
}
190-
191-
return ref __disassemblerDefaultValueHolder;
192-
}
193-
194-
#elif RETURNS_VOID_$ID$
195-
196-
// Prevent inlining the method invoke.
197-
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining | System.Runtime.CompilerServices.MethodImplOptions.NoOptimization)]
198-
private void __WorkloadWrapper($ArgumentsDefinition$)
199-
{
200-
$WorkloadMethodCall$;
201-
}
202-
203157
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoOptimization | System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
204158
public void $DisassemblerEntryMethodName$()
205159
{
@@ -209,5 +163,4 @@
209163
$WorkloadMethodCall$;
210164
}
211165
}
212-
#endif // RETURNS
213166
}

Diff for: src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/ByRefConsumeEmitter.cs

-43
This file was deleted.

Diff for: src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/ConsumeEmitter.cs

-147
This file was deleted.

Diff for: src/BenchmarkDotNet/Toolchains/InProcess/Emit/Implementation/Emitters/NonVoidConsumeEmitter.cs

-31
This file was deleted.

0 commit comments

Comments
 (0)