@@ -873,7 +873,7 @@ class [BenchmarkDotNet]BenchmarkDotNet.Toolchains.Parameters.ExecuteParameters p
873873 var argsExceptInstance = prepareForRunMethodTemplate
874874 . GetParameters ( )
875875 . Skip ( 1 )
876- . Select ( p => ( ParameterInfo ) new EmitParameterInfo ( p . Position - 1 , p . Name , p . ParameterType , p . Attributes , null ) )
876+ . Select ( p => ( ParameterInfo ) new EmitParameterInfo ( p . Position - 1 , p . Name , p . ParameterType , p . Attributes , null ) )
877877 . ToArray ( ) ;
878878 var methodBuilder = runnableBuilder . DefineStaticMethod (
879879 RunMethodName ,
@@ -892,15 +892,13 @@ .locals init (
892892 [1] class [BenchmarkDotNet]BenchmarkDotNet.Jobs.Job,
893893 [2] class [BenchmarkDotNet]BenchmarkDotNet.Engines.EngineParameters,
894894 [3] class [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngineFactory,
895- [4] class [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngine,
896- [5] valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.RunResults
895+ [4] valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.RunResults
897896 )
898897 */
899898 var instanceLocal = ilBuilder . DeclareLocal ( runnableBuilder ) ;
900899 var jobLocal = ilBuilder . DeclareLocal ( typeof ( Job ) ) ;
901900 var engineParametersLocal = ilBuilder . DeclareLocal ( typeof ( EngineParameters ) ) ;
902901 var engineFactoryLocal = ilBuilder . DeclareLocal ( typeof ( IEngineFactory ) ) ;
903- var engineLocal = ilBuilder . DeclareLocal ( typeof ( IEngine ) ) ;
904902 var runResultsLocal = ilBuilder . DeclareLocal ( typeof ( RunResults ) ) ;
905903
906904 /*
@@ -961,82 +959,48 @@ [5] valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.RunResults
961959 ilBuilder . EmitVoidReturn ( methodBuilder ) ;
962960
963961 /*
964- // using (IEngine engine = engineFactory.CreateReadyToRun (engineParameters))
962+ // RunResults results = engineFactory.Create (engineParameters).Run();
965963 IL_0026: ldloc.3
966964 IL_0027: ldloc.2
967- IL_0028: callvirt instance class [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngine [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngineFactory::CreateReadyToRun(class [BenchmarkDotNet]BenchmarkDotNet.Engines.EngineParameters)
968- IL_002d: stloc.s 4
965+ IL_0028: callvirt instance class [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngine [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngineFactory::Create(class [BenchmarkDotNet]BenchmarkDotNet.Engines.EngineParameters)
966+ IL_002d: callvirt instance valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.RunResults [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngine::Run()
967+ IL_0032: stloc.s 4
969968 */
970- var createReadyToRunMethod = typeof ( IEngineFactory ) . GetMethod ( nameof ( IEngineFactory . CreateReadyToRun ) )
971- ?? throw new MissingMemberException ( nameof ( IEngineFactory . CreateReadyToRun ) ) ;
969+ var createReadyToRunMethod = typeof ( IEngineFactory ) . GetMethod ( nameof ( IEngineFactory . Create ) )
970+ ?? throw new MissingMemberException ( nameof ( IEngineFactory . Create ) ) ;
971+ var runMethodImpl = typeof ( IEngine ) . GetMethod ( nameof ( IEngine . Run ) )
972+ ?? throw new MissingMemberException ( nameof ( IEngine . Run ) ) ;
972973 ilBuilder . MarkLabel ( notNullLabel ) ;
973974 ilBuilder . EmitLdloc ( engineFactoryLocal ) ;
974975 ilBuilder . EmitLdloc ( engineParametersLocal ) ;
975976 ilBuilder . Emit ( OpCodes . Callvirt , createReadyToRunMethod ) ;
976- ilBuilder . EmitStloc ( engineLocal ) ;
977-
978- // .try
979- // {
980- ilBuilder . BeginExceptionBlock ( ) ;
981- {
982- /*
983- // RunResults results = engine.Run();
984- IL_002f: ldloc.s 4
985- IL_0031: callvirt instance valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.RunResults [BenchmarkDotNet]BenchmarkDotNet.Engines.IEngine::Run()
986- IL_0036: stloc.s 5
987- */
988- var runMethodImpl = typeof ( IEngine ) . GetMethod ( nameof ( IEngine . Run ) )
989- ?? throw new MissingMemberException ( nameof ( IEngine . Run ) ) ;
990- ilBuilder . EmitLdloc ( engineLocal ) ;
991- ilBuilder . Emit ( OpCodes . Callvirt , runMethodImpl ) ;
992- ilBuilder . EmitStloc ( runResultsLocal ) ;
993- /*
994- // host.ReportResults(results);
995- IL_0038: ldarg.1
996- IL_0039: ldloc.s 5
997- IL_003b: callvirt instance void [BenchmarkDotNet]BenchmarkDotNet.Engines.IHost::ReportResults(valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.RunResults)
998- */
999- var reportResultsMethod = typeof ( IHost ) . GetMethod ( nameof ( IHost . ReportResults ) )
1000- ?? throw new MissingMemberException ( nameof ( IHost . ReportResults ) ) ;
1001- ilBuilder . EmitLdarg ( hostArg ) ;
1002- ilBuilder . EmitLdloc ( runResultsLocal ) ;
1003- ilBuilder . Emit ( OpCodes . Callvirt , reportResultsMethod ) ;
1004- /*
1005- // instance.__TrickTheJIT__();
1006- IL_0040: ldloc.0
1007- IL_0041: callvirt instance void BenchmarkDotNet.Autogenerated.ReplaceMe.Runnable0::__TrickTheJIT__()
1008- */
1009- ilBuilder . Emit ( OpCodes . Ldloc_0 ) ;
1010- ilBuilder . Emit ( OpCodes . Callvirt , trickTheJitMethod ) ;
1011- }
1012- // finally
1013- // {
1014- ilBuilder . BeginFinallyBlock ( ) ;
1015- {
1016- /*
1017- IL_0048: ldloc.s 4
1018- IL_004a: brfalse.s IL_0053
1019- IL_004c: ldloc.s 4
1020- IL_004e: callvirt instance void [mscorlib]System.IDisposable::Dispose()
1021- */
1022- var disposeMethod = typeof ( IDisposable ) . GetMethod ( nameof ( IDisposable . Dispose ) )
1023- ?? throw new MissingMemberException ( nameof ( IDisposable . Dispose ) ) ;
1024- var disposeNullLabel = ilBuilder . DefineLabel ( ) ;
1025- ilBuilder . EmitLdloc ( engineLocal ) ;
1026- ilBuilder . Emit ( OpCodes . Brfalse_S , disposeNullLabel ) ;
1027- ilBuilder . EmitLdloc ( engineLocal ) ;
1028- ilBuilder . Emit ( OpCodes . Callvirt , disposeMethod ) ;
1029-
1030- ilBuilder . MarkLabel ( disposeNullLabel ) ;
1031- ilBuilder . EndExceptionBlock ( ) ;
1032- }
977+ ilBuilder . Emit ( OpCodes . Callvirt , runMethodImpl ) ;
978+ ilBuilder . EmitStloc ( runResultsLocal ) ;
979+ /*
980+ // host.ReportResults(runResults);
981+ IL_0034: ldarg.0
982+ IL_0035: ldloc.s 4
983+ IL_0037: callvirt instance void [BenchmarkDotNet]BenchmarkDotNet.Engines.IHost::ReportResults(valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.RunResults)
984+ */
1033985
986+ var reportResultsMethod = typeof ( IHost ) . GetMethod ( nameof ( IHost . ReportResults ) )
987+ ?? throw new MissingMemberException ( nameof ( IHost . ReportResults ) ) ;
988+ ilBuilder . EmitLdarg ( hostArg ) ;
989+ ilBuilder . EmitLdloc ( runResultsLocal ) ;
990+ ilBuilder . Emit ( OpCodes . Callvirt , reportResultsMethod ) ;
991+ /*
992+ // runnable_.__TrickTheJIT__();
993+ IL_003c: ldloc.0
994+ IL_003d: callvirt instance void BenchmarkDotNet.Autogenerated.ReplaceMe.Runnable_0::__TrickTheJIT__()
995+ */
996+ ilBuilder . Emit ( OpCodes . Ldloc_0 ) ;
997+ ilBuilder . Emit ( OpCodes . Callvirt , trickTheJitMethod ) ;
1034998 /*
1035999 // engineParameters.InProcessDiagnoserHandler.Handle(BenchmarkSignal.AfterEngine);
1036- IL_0054 : ldloc.2
1037- IL_0055 : callvirt instance class [BenchmarkDotNet]BenchmarkDotNet.Diagnosers.CompositeInProcessDiagnoserHandler [BenchmarkDotNet]BenchmarkDotNet.Engines.EngineParameters::get_InProcessDiagnoserHandler()
1038- IL_005a : ldc.i4.3
1039- IL_005b : callvirt instance void [BenchmarkDotNet]BenchmarkDotNet.Diagnosers.CompositeInProcessDiagnoserHandler::Handle(valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.BenchmarkSignal)
1000+ IL_0042 : ldloc.2
1001+ IL_0043 : callvirt instance class [BenchmarkDotNet]BenchmarkDotNet.Diagnosers.CompositeInProcessDiagnoserHandler [BenchmarkDotNet]BenchmarkDotNet.Engines.EngineParameters::get_InProcessDiagnoserHandler()
1002+ IL_0048 : ldc.i4.5
1003+ IL_0049 : callvirt instance void [BenchmarkDotNet]BenchmarkDotNet.Diagnosers.CompositeInProcessDiagnoserHandler::Handle(valuetype [BenchmarkDotNet]BenchmarkDotNet.Engines.BenchmarkSignal)
10401004 */
10411005 ilBuilder . EmitLdloc ( engineParametersLocal ) ;
10421006 ilBuilder . Emit ( OpCodes . Callvirt , typeof ( EngineParameters ) . GetProperty ( nameof ( EngineParameters . InProcessDiagnoserHandler ) ) . GetGetMethod ( ) ) ;
0 commit comments