internal Engine(Action<long> idleAction, Action<long> mainAction, Job targetJob, Action setupAction, Action cleanupAction, long operationsPerInvoke, bool isDiagnoserAttached) { IdleAction = idleAction; MainAction = mainAction; TargetJob = targetJob; SetupAction = setupAction; CleanupAction = cleanupAction; OperationsPerInvoke = operationsPerInvoke; IsDiagnoserAttached = isDiagnoserAttached; Resolver = new CompositeResolver(BenchmarkRunnerCore.DefaultResolver, EngineResolver.Instance); Clock = targetJob.ResolveValue(InfrastructureMode.ClockCharacteristic, Resolver); ForceAllocations = targetJob.ResolveValue(GcMode.ForceCharacteristic, Resolver); UnrollFactor = targetJob.ResolveValue(RunMode.UnrollFactorCharacteristic, Resolver); Strategy = targetJob.ResolveValue(RunMode.RunStrategyCharacteristic, Resolver); EvaluateOverhead = targetJob.ResolveValue(AccuracyMode.EvaluateOverheadCharacteristic, Resolver); InvocationCount = targetJob.ResolveValue(RunMode.InvocationCountCharacteristic, Resolver); warmupStage = new EngineWarmupStage(this); pilotStage = new EnginePilotStage(this); targetStage = new EngineTargetStage(this); }
private string GetMonoArguments(Job job, string exeName, string args, IResolver resolver) { // from mono --help: "Usage is: mono [options] program [program-options]" return new StringBuilder(30) .Append(job.ResolveValue(EnvMode.JitCharacteristic, resolver) == Jit.Llvm ? "--llvm" : "--nollvm") .Append(' ') .Append(exeName) .Append(' ') .Append(args) .ToString(); }