Skip to content

Commit f8bcb89

Browse files
authored
Added ReleaseCores to BuildEngine usages that did not have it. (dotnet#104141)
1 parent 9f26939 commit f8bcb89

File tree

3 files changed

+48
-25
lines changed

3 files changed

+48
-25
lines changed

src/tasks/AotCompilerTask/MonoAOTCompiler.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,8 @@ private bool ExecuteInternal()
524524
else
525525
{
526526
int allowedParallelism = DisableParallelAot ? 1 : Math.Min(_assembliesToCompile.Count, Environment.ProcessorCount);
527-
if (BuildEngine is IBuildEngine9 be9)
527+
IBuildEngine9? be9 = BuildEngine as IBuildEngine9;
528+
if (be9 is not null)
528529
allowedParallelism = be9.RequestCores(allowedParallelism);
529530

530531
/*
@@ -553,20 +554,26 @@ all assigned to that one partition.
553554
554555
Instead, we want to use work-stealing so jobs can be run by any partition.
555556
*/
556-
ParallelLoopResult result = Parallel.ForEach(
557+
try
558+
{
559+
ParallelLoopResult result = Parallel.ForEach(
557560
Partitioner.Create(argsList, EnumerablePartitionerOptions.NoBuffering),
558561
new ParallelOptions { MaxDegreeOfParallelism = allowedParallelism },
559562
PrecompileLibraryParallel);
560-
561-
if (result.IsCompleted)
562-
{
563-
int numUnchanged = _totalNumAssemblies - _numCompiled;
564-
if (numUnchanged > 0 && numUnchanged != _totalNumAssemblies)
565-
Log.LogMessage(MessageImportance.High, $"[{numUnchanged}/{_totalNumAssemblies}] skipped unchanged assemblies.");
563+
if (result.IsCompleted)
564+
{
565+
int numUnchanged = _totalNumAssemblies - _numCompiled;
566+
if (numUnchanged > 0 && numUnchanged != _totalNumAssemblies)
567+
Log.LogMessage(MessageImportance.High, $"[{numUnchanged}/{_totalNumAssemblies}] skipped unchanged assemblies.");
568+
}
569+
else if (!Log.HasLoggedErrors)
570+
{
571+
Log.LogError($"Precompiling failed due to unknown reasons. Check log for more info");
572+
}
566573
}
567-
else if (!Log.HasLoggedErrors)
574+
finally
568575
{
569-
Log.LogError($"Precompiling failed due to unknown reasons. Check log for more info");
576+
be9?.ReleaseCores(allowedParallelism);
570577
}
571578
}
572579

src/tasks/MonoTargetsTasks/ILStrip/ILStrip.cs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,12 @@ public override bool Execute()
7575
Log.LogMessage(MessageImportance.High, "IL stripping assemblies");
7676

7777
int allowedParallelism = DisableParallelStripping ? 1 : Math.Min(Assemblies.Length, Environment.ProcessorCount);
78-
if (BuildEngine is IBuildEngine9 be9)
78+
IBuildEngine9? be9 = BuildEngine as IBuildEngine9;
79+
if (be9 is not null)
7980
allowedParallelism = be9.RequestCores(allowedParallelism);
80-
ParallelLoopResult result = Parallel.ForEach(Assemblies,
81+
try
82+
{
83+
ParallelLoopResult result = Parallel.ForEach(Assemblies,
8184
new ParallelOptions { MaxDegreeOfParallelism = allowedParallelism },
8285
(assemblyItem, state) =>
8386
{
@@ -93,14 +96,19 @@ public override bool Execute()
9396
}
9497
});
9598

96-
if (TrimIndividualMethods)
97-
{
98-
UpdatedAssemblies = ConvertAssembliesDictToOrderedList(_processedAssemblies, Assemblies).ToArray();
99-
}
99+
if (TrimIndividualMethods)
100+
{
101+
UpdatedAssemblies = ConvertAssembliesDictToOrderedList(_processedAssemblies, Assemblies).ToArray();
102+
}
100103

101-
if (!result.IsCompleted && !Log.HasLoggedErrors)
104+
if (!result.IsCompleted && !Log.HasLoggedErrors)
105+
{
106+
Log.LogError("Unknown failure occurred while IL stripping assemblies. Check logs to get more details.");
107+
}
108+
}
109+
finally
102110
{
103-
Log.LogError("Unknown failure occurred while IL stripping assemblies. Check logs to get more details.");
111+
be9?.ReleaseCores(allowedParallelism);
104112
}
105113

106114
return !Log.HasLoggedErrors;

src/tasks/WasmAppBuilder/EmccCompile.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ private bool ExecuteActual()
131131
Directory.CreateDirectory(_tempPath);
132132

133133
int allowedParallelism = DisableParallelCompile ? 1 : Math.Min(SourceFiles.Length, Environment.ProcessorCount);
134-
if (BuildEngine is IBuildEngine9 be9)
134+
IBuildEngine9? be9 = BuildEngine as IBuildEngine9;
135+
if (be9 is not null)
135136
allowedParallelism = be9.RequestCores(allowedParallelism);
136137

137138
/*
@@ -160,17 +161,24 @@ all assigned to that one partition.
160161
161162
Instead, we want to use work-stealing so jobs can be run by any partition.
162163
*/
163-
ParallelLoopResult result = Parallel.ForEach(
164+
try
165+
{
166+
ParallelLoopResult result = Parallel.ForEach(
164167
Partitioner.Create(filesToCompile, EnumerablePartitionerOptions.NoBuffering),
165168
new ParallelOptions { MaxDegreeOfParallelism = allowedParallelism },
166169
(toCompile, state) =>
170+
{
171+
if (!ProcessSourceFile(toCompile.Item1, toCompile.Item2))
172+
state.Stop();
173+
});
174+
if (!result.IsCompleted && !Log.HasLoggedErrors)
175+
Log.LogError("Unknown failure occurred while compiling. Check logs to get more details.");
176+
}
177+
finally
167178
{
168-
if (!ProcessSourceFile(toCompile.Item1, toCompile.Item2))
169-
state.Stop();
170-
});
179+
be9?.ReleaseCores(allowedParallelism);
180+
}
171181

172-
if (!result.IsCompleted && !Log.HasLoggedErrors)
173-
Log.LogError("Unknown failure occurred while compiling. Check logs to get more details.");
174182

175183
if (!Log.HasLoggedErrors)
176184
{

0 commit comments

Comments
 (0)