Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Wrighton <davidwr@microsoft.com>2021-03-19 07:27:51 +0300
committerGitHub <noreply@github.com>2021-03-19 07:27:51 +0300
commit5d4a85156cc5ab999997f0c6e6d44f9a28208537 (patch)
treef1b7606939e9ae2f6fc888785fe7d7367de4754d /eng/restore
parent3df7a6e3dd4ab11494f4e3a2394b386a73bb446f (diff)
Enable the latest managed pgo data (#49793)
- Implementation is parallel to existing ibc handling, so that it can be toggled on/off by adjusting the `UsingToolIbcOptimization` property - Use the same data for all assemblies produced in current build - Apply data to release builds only - Disable mismatch assertions in jit for current state where il mismatches are common
Diffstat (limited to 'eng/restore')
-rw-r--r--eng/restore/optimizationData.targets46
1 files changed, 46 insertions, 0 deletions
diff --git a/eng/restore/optimizationData.targets b/eng/restore/optimizationData.targets
index 9b431aa953a..c7ce30fadd2 100644
--- a/eng/restore/optimizationData.targets
+++ b/eng/restore/optimizationData.targets
@@ -34,4 +34,50 @@
</Target>
+
+ <ItemGroup>
+ <!-- Mibc data to use when exact architecture match is available -->
+ <MIBCPackageDef Include="optimization.windows_nt-x86.mibc.runtime" Version="$(optimizationwindows_ntx86MIBCRuntimeVersion)" MibcArchitecture="Windows/x86"/>
+ <MIBCPackageDef Include="optimization.windows_nt-x64.mibc.runtime" Version="$(optimizationwindows_ntx64MIBCRuntimeVersion)" MibcArchitecture="Windows/x64"/>
+ <MIBCPackageDef Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" MibcArchitecture="Linux/x64"/>
+
+ <!-- Mibc data to use when exact architecture match not available -->
+ <MIBCPackageDef Include="optimization.windows_nt-x64.mibc.runtime" Version="$(optimizationwindows_ntx64MIBCRuntimeVersion)" MibcArchitecture="Windows"/>
+ <MIBCPackageDef Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" MibcArchitecture="Linux"/>
+ <MIBCPackageDef Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" MibcArchitecture="OSX"/>
+
+ <MIBCPackage Include="@(MIBCPackageDef->HasMetadata('MibcArchitecture')->WithMetadataValue('MibcArchitecture','$(TargetOS)/$(TargetArchitecture)'))" />
+ <MIBCPackage Include="@(MIBCPackageDef->HasMetadata('MibcArchitecture')->WithMetadataValue('MibcArchitecture','$(TargetOS)'))" Condition="'@(MIBCPackage)' == ''" />
+
+ <!-- Fallback in case no os specific data is available-->
+ <MIBCPackage Include="optimization.linux-x64.mibc.runtime" Version="$(optimizationlinuxx64MIBCRuntimeVersion)" Condition="'@(MIBCPackage)' == ''" />
+
+ <PackageDownload Include="@(MIBCPackage)" Version="[%(Version)]" />
+ </ItemGroup>
+
+ <!-- IBC data packages don't follow NuGet conventions. -->
+ <Target Name="GetMIBCData"
+ AfterTargets="Restore">
+
+ <ItemGroup>
+ <MIBCPackage>
+ <PackagePath>$(NuGetPackageRoot)%(MIBCPackage.Identity)/%(MIBCPackage.Version)</PackagePath>
+ </MIBCPackage>
+ <_optimizationMibcFile Include="%(MIBCPackage.PackagePath)/**/*.mibc" SubdirectoryName="$(TargetOS)/$(TargetArchitecture)" />
+ <ExcessFilesCurrentlyPresent Include="$(MibcOptimizationDataDir)/**"
+ Exclude="@(_optimizationMibcFile->'$(MibcOptimizationDataDir)%(SubdirectoryName)/%(RecursiveDir)%(Filename)%(Extension)')"/>
+ </ItemGroup>
+
+ <Error Condition="'@(_optimizationMibcFile)' == ''" Text="Failed to restore Mibc optimization data" />
+
+ <!-- Clean mibc restore directory so that no extra mibc files are present. Improves incremental build resiliency -->
+ <Delete Files="@(ExcessFilesCurrentlyPresent)" />
+
+ <!-- Copy the correct mibc files into place -->
+ <Copy SourceFiles="@(_optimizationMibcFile)"
+ DestinationFiles="@(_optimizationMibcFile->'$(MibcOptimizationDataDir)%(SubdirectoryName)/%(RecursiveDir)%(Filename)%(Extension)')"
+ SkipUnchangedFiles="true"
+ UseHardlinksIfPossible="true" />
+
+ </Target>
</Project>