2016-04-22 19:23:26 +00:00
|
|
|
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
|
|
|
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
|
|
|
|
|
|
|
using System;
|
|
|
|
using System.IO;
|
|
|
|
using System.Runtime.Loader;
|
|
|
|
using Microsoft.DotNet.Cli.Utils;
|
|
|
|
using Microsoft.DotNet.Tools.Common;
|
|
|
|
using Microsoft.Extensions.PlatformAbstractions;
|
|
|
|
using NuGet.Frameworks;
|
|
|
|
|
|
|
|
namespace Microsoft.DotNet.Cli
|
|
|
|
{
|
|
|
|
public class MulticoreJitActivator
|
|
|
|
{
|
|
|
|
public bool TryActivateMulticoreJit()
|
|
|
|
{
|
|
|
|
var disableMulticoreJit = IsMulticoreJitDisabled();
|
|
|
|
|
|
|
|
if (disableMulticoreJit)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
StartCliProfileOptimization();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
private bool IsMulticoreJitDisabled()
|
|
|
|
{
|
|
|
|
return Environment.GetEnvironmentVariable("DOTNET_DISABLE_MULTICOREJIT") == "1";
|
|
|
|
}
|
|
|
|
|
|
|
|
private void StartCliProfileOptimization()
|
|
|
|
{
|
|
|
|
var profileOptimizationRootPath = new MulticoreJitProfilePathCalculator().MulticoreJitProfilePath;
|
|
|
|
|
|
|
|
PathUtility.EnsureDirectory(profileOptimizationRootPath);
|
|
|
|
|
|
|
|
AssemblyLoadContext.Default.SetProfileOptimizationRoot(profileOptimizationRootPath);
|
|
|
|
|
|
|
|
AssemblyLoadContext.Default.StartProfileOptimization("dotnet");
|
|
|
|
}
|
|
|
|
}
|
2016-04-25 18:22:32 +00:00
|
|
|
}
|